DTW算法的python實現(xiàn)

關(guān)于DTW算法

動態(tài)時間規(guī)整/規(guī)劃(Dynamic Time Warping, DTW)是一個比較老的算法无牵,大概在1970年左右被提出來腰涧,最早用于處理語音方面識別分類的問題神凑。

這里有兩篇我認(rèn)為講的很好的DTW算法詳解辅愿,鏈接在此:
如果對DTW算法感興趣可以去看一下~
https://www.cnblogs.com/Daringoo/p/4095508.html
http://blog.csdn.net/raym0ndkwan/article/details/45614813

在這里我主要用python實現(xiàn)了DTW算法

# -*- coding: UTF-8 -*-

from numpy import array, zeros, argmin, inf, equal, ndim
# from scipy.spatial.distance import cdist
from sklearn.metrics.pairwise import manhattan_distances
#在這里我用到的是曼哈頓距離(求絕對值距離)
#如果比較的是二維數(shù)組谈山,則用歐幾里得距離

s1 = [1, 2, 3, 4, 5, 5, 5, 4]
s2 = [3, 4, 5, 5, 5, 4]

r, c = len(s1), len(s2)
D0 = zeros((r+1,c+1))
D0[0,1:] = inf
D0[1:,0] = inf
D1 = D0[1:,1:]
#淺復(fù)制
# print D1

for i in range(r):
    for j in range(c):
        D1[i,j] = manhattan_distances(s1[i],s2[j])
#生成原始距離矩陣

M = D1.copy()
for i in range(r):
    for j in range(c):
        D1[i,j] += min(D0[i,j],D0[i,j+1],D0[i+1,j])
#代碼核心俄删,動態(tài)計算最短距離


i,j = array(D0.shape) - 2
#最短路徑
# print i,j
p,q = [i],[j]
while(i>0 or j>0):
    tb = argmin((D0[i,j],D0[i,j+1],D0[i+1,j]))
    if tb==0 :
        i-=1
        j-=1
    elif tb==1 :
        i-=1
    else:
        j-=1
    p.insert(0,i)
    q.insert(0,j)

print M
#原始距離矩陣
print zip(p,q)
#匹配路徑過程
print D1
#Cost Matrix或者叫累積距離矩陣
print D1[-1,-1]
#序列距離
M:
[[ 2.  3.  4.  4.  4.  3.]
 [ 1.  2.  3.  3.  3.  2.]
 [ 0.  1.  2.  2.  2.  1.]
 [ 1.  0.  1.  1.  1.  0.]
 [ 2.  1.  0.  0.  0.  1.]
 [ 2.  1.  0.  0.  0.  1.]
 [ 2.  1.  0.  0.  0.  1.]
 [ 1.  0.  1.  1.  1.  0.]]

path:
[(0, 0), (1, 0), (2, 0), (3, 1), (4, 2), (5, 3), (6, 4), (7, 5)]

D1:
[[  2.   5.   9.  13.  17.  20.]
 [  3.   4.   7.  10.  13.  15.]
 [  3.   4.   6.   8.  10.  11.]
 [  4.   3.   4.   5.   6.   6.]
 [  6.   4.   3.   3.   3.   4.]
 [  8.   5.   3.   3.   3.   4.]
 [ 10.   6.   3.   3.   3.   4.]
 [ 11.   6.   4.   4.   4.   3.]]

D1[-1,-1]:
3.0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市奏路,隨后出現(xiàn)的幾起案子畴椰,更是在濱河造成了極大的恐慌,老刑警劉巖鸽粉,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斜脂,死亡現(xiàn)場離奇詭異,居然都是意外死亡触机,警方通過查閱死者的電腦和手機帚戳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來威兜,“玉大人销斟,你說我怎么就攤上這事庐椒〗范妫” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵约谈,是天一觀的道長笔宿。 經(jīng)常有香客問我,道長棱诱,這世上最難降的妖魔是什么泼橘? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮迈勋,結(jié)果婚禮上炬灭,老公的妹妹穿的比我還像新娘。我一直安慰自己靡菇,他們只是感情好重归,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布米愿。 她就那樣靜靜地躺著,像睡著了一般鼻吮。 火紅的嫁衣襯著肌膚如雪育苟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天椎木,我揣著相機與錄音违柏,去河邊找鬼。 笑死香椎,一個胖子當(dāng)著我的面吹牛漱竖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畜伐,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼闲孤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烤礁?” 一聲冷哼從身側(cè)響起讼积,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脚仔,沒想到半個月后勤众,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡鲤脏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年们颜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猎醇。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡窥突,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硫嘶,到底是詐尸還是另有隱情阻问,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布沦疾,位于F島的核電站称近,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏哮塞。R本人自食惡果不足惜刨秆,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忆畅。 院中可真熱鬧衡未,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至改衩,卻和暖如春岖常,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背葫督。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工竭鞍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人橄镜。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓偎快,卻偏偏與公主長得像,于是被迫代替她去往敵國和親洽胶。 傳聞我的和親對象是個殘疾皇子晒夹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容