文章目录
- 一、install 数据包
- 二、函数功能
- 三、函数的参数以及含义
- 四、具体实现
一、install 数据包
简单的pip install
一下就好了,注意最后提示Successfully installed dtw-python-1.3.0
pip install dtw-python
二、函数功能
执行 DTW 算法,并计算两个时间序列 x 和 y 之间的最佳匹配(optimal alignment)
三、函数的参数以及含义
def dtw(x, y=None,
dist_method="euclidean",
step_pattern="symmetric2",
window_type=None,
window_args={},
keep_internals=False,
distance_only=False,
open_end=False,
open_begin=False):
x
,序列1,好像应该是浮点数,如果是int会有问题(我自己还没遇到过,有兴趣可以试试看)y
,序列2dist_method
,计算距离矩阵时使用的函数,默认是欧式距离,具体原理之前讲过,不清楚的补原理讲解。step_pattern
,一个 stepPattern 对象,用于描述局部限制。该参数支持许多常见的 DTW 变体。window_type
,描述全局限制,更多细节可见 dtwWindowingFunctions()。window_args
,传给 windowing function 的额外参数keep_internals
,保留 cumulative cost matrix、inputs 以及其他内部结构distance_only
,仅计算距离(没有backtrack,速度更快)
四、具体实现
import numpy as np
from dtw import *
import matplotlib.pyplot as plt
# 生成两个时间序列,一个是正弦波,一个是余弦波
idx = np.linspace(0, 6.28, num=100)
x1 = np.sin(idx)
x2 = np.cos(idx)
# 计算DTW距离和对齐
alignment = dtw(x1, x2, keep_internals=True)
# 打印DTW距离
print(alignment.distance)
# 绘制对齐曲线
alignment.plot(type="twoway",offset=-2)
plt.show()