学习dtw-python库内容 && 动态弯曲距离(DTW)具体实现

一、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):
  1. x,序列1,好像应该是浮点数,如果是int会有问题(我自己还没遇到过,有兴趣可以试试看)
  2. y,序列2
  3. dist_method,计算距离矩阵时使用的函数,默认是欧式距离,具体原理之前讲过,不清楚的补原理讲解。
  4. step_pattern,一个 stepPattern 对象,用于描述局部限制。该参数支持许多常见的 DTW 变体。
  5. window_type,描述全局限制,更多细节可见 dtwWindowingFunctions()。
  6. window_args,传给 windowing function 的额外参数
  7. keep_internals,保留 cumulative cost matrix、inputs 以及其他内部结构
  8. 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()

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值