时间序列匹配之dtw的python实现(一) |
您所在的位置:网站首页 › PADDLE消费 › 时间序列匹配之dtw的python实现(一) |
简介
Dynamic Time Warping(动态时间序列扭曲匹配,简称DTW)是时间序列分析的经典算法,用来比较两条时间序列之间的距离,发现最短路径。笔者在github上搜索dtw时发现了两个比较经典的库:dtw和dtw-python。dtw库的功能少但简单容易理解,dtw-python的功能齐全并提供了清晰的作图。在这里我们先介绍dtw库,dtw-python库留到下一篇文章介绍。 示例对dtw算法的基本原理还不是很理解的可以点击这里,里面介绍的相当清楚了,接下来我们进入正题。 import numpy as np #来自官方库的示例,代码未动,但注解原创。 #y是x的子序列,从x的第三个数字开始一一匹配 x = np.array([2, 0, 1, 1, 2, 4, 2, 1, 2, 0]).reshape(-1, 1) y = np.array([1, 1, 2, 4, 2, 1, 2, 0]).reshape(-1, 1) from dtw import dtw #曼哈顿距离定义,各点相减的绝对值 manhattan_distance = lambda x, y: np.abs(x - y) #计算出总距离,耗费矩阵,累计耗费矩阵,在矩阵上的路径 d, cost_matrix, acc_cost_matrix, path = dtw(x, y, dist=manhattan_distance) print(d) #计算得出2.0 import matplotlib.pyplot as plt plt.imshow(acc_cost_matrix.T, origin='lower', cmap='gray', interpolation='nearest') #lower参数表示上下颠倒,注意这里矩阵行列转置 plt.plot(path[0], path[1], 'w') #path包含两个array plt.show()
1.https://github.com/pierre-rouanet/dtw 2.https://zhuanlan.zhihu.com/p/43247215 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |