关于DTW算法
动态时间规整/规划(Dynamic Time Warping, DTW)是一个比较老的算法,大概在1970年左右被提出来,最早用于处理语音方面识别分类的问题。
在这里我主要用python实现了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
#在这里我用到的是曼哈顿距离(求绝对值距离)
#如果比较的是二维数组,则用欧几里得距离
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:]
#浅复制
# 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,