文章目录

  • DTW算法思路
  • DTW算例
    • 原生代码计算
    • dtaidistance库计算DTW
  • fastDTW算例
  • 参考资料

DTW算法思路

论文地址:https://irit.fr/~Julien.Pinquier/Docs/TP_MABS/res/dtw-sakoe-chiba78.pdf
算法思路:

  1. 计算两个序列不同位置点对应的距离,构成一个矩阵
  2. 在矩阵中找到序列的起始位置对应的单元格,与最后一个单元格
  3. 从这个格子开始,找一条路径,从开始到结尾,使路径上单元格值加总最小

DTW算例

原生代码计算

Github地址:https://github.com/pierre-rouanet/dtw

import numpy as np
from dtw import dtwx = np.array([2, 0, 1, 1, 2, 4, 2, 1, 2, 0])
y = np.array([1, 1, 2, 4, 2, 1, 4, 2])
manhattan_distance = lambda x, y: np.abs(x - y)d, cost_matrix, acc_cost_matrix, path = dtw(x, y, dist=manhattan_distance)
print(d)

返回值中:
d:总距离值
cost_matrix:所有点的距离矩阵
acc_cost_matrix:累加的距离值
path:最短路径对应的坐标,为tuple类型的数据

dtaidistance库计算DTW

为了加速DTW运算,可以使用第三方库dtaidistance

dtaidistance github页面:https://github.com/wannesm/dtaidistance

dtaidistance 文档首页:https://dtaidistance.readthedocs.io/en/latest/usage/dtw.html

from dtaidistance import dtw
import numpy as nps1 = np.array([0, 0, 1, 2, 1, 0, 1, 0, 0], dtype=np.float)
s2 = np.array([0, 1, 2, 0, 0, 0, 0, 0, 0], dtype=np.float)
d = dtw.distance_fast(s1, s2, use_pruning=True)

fastDTW算例

paper:http://cs.fit.edu/~pkc/papers/tdm04.pdf
算例来自官网:

import numpy as np
from scipy.spatial.distance import euclideanfrom fastdtw import fastdtwx = np.array([[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]])
y = np.array([[2, 2], [3, 3], [4, 4]])
distance, path = fastdtw(x, y, dist=euclidean)
print(distance)

返回值中:
distance:距离值
path:最短路径对应的坐标,为list(tuple)类型的数据

参考资料

WikiMapia :https://en.wikipedia.org/wiki/Dynamic_time_warping
时间序列相似性度量综述:https://zhuanlan.zhihu.com/p/69170491
HMM学习笔记_1(从一个实例中学习DTW算法):https://www.cnblogs.com/tornadomeet/archive/2012/03/23/2413363.html

DTW(动态时间归整)算法与DTW,fastDTW的python算例相关推荐

  1. DTW 动态时间规整

    面临的问题 当数据在时间线上不对齐的时候,使用传统的匹配方法,是无法使用传统的全局匹配度量法的.DTW是一种衡量两个时间序列之间的相似度的方法,主要应用在语音识别领域来识别两段语音是否表示同一个单词. ...

  2. java dtw,DTW动态时间规整算法

    [TOC] 1.基本介绍 DTW:Dynamic Time Warping,即动态时间归整.DTW算法基于DP动态规划思想,解决了发音长短不一的模板匹配问题,常用于语音识别(孤立词识别). HMM算法 ...

  3. 书本算法重现丨遗传算法:以算例MK01为例

    车间调度系列文章: 1.车间调度历史文章 2.书本算法重现丨遗传算法:以算例MK01为例 引言 算法重现系列文章,都是对书本<柔性作业车间调度智能算法及其应用>一书的算法实现,该书作者:高 ...

  4. DTW动态时间规整算法

    原文地址:https://blog.csdn.net/qcyfred/article/details/53824507 https://zhuanlan.zhihu.com/p/43247215 动态 ...

  5. 初识DTW(动态时间规整)算法及Python实现例

    目录 1. 概要 2. 时序列相似度度量 3. DTW基本算法 4. Python实现 5. Next Action 1. 概要 DTW( Dynamic Time Warping,动态时间规整)是基 ...

  6. fluent算例及利用c语言程序算法,第01章 fluent简单算例17

    第01章 fluent简单算例17 第一章 开始 赵玉新(国防科技大学航天学院) 注意:此文只用于流体力学的教学和科学研究,如若涉及到版权问题请于本人联系. 本章对FLUENT做了大致的介绍,其中包括 ...

  7. Python 算例实现Levenberg-Marquardt算法

    第一次写技术博文,有错误的地方欢迎指点.     本博文是通过一个算例对LM算法的学习进行总结,编程语言是python.     理论就不讲了,网上一大堆.     拟合函数 y(x) = exp(a ...

  8. c语言模拟实现DTW(动态时间规整算法)

    关于DTW算法的原理这篇博客写的很好https://blog.csdn.net/aa8568849/article/details/53841189?utm_medium=distribute.pc_ ...

  9. 基于遗传算法的BP神经网络优化算法(GA BP)实用算例

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.工程背景 二.代码(部分) 1.引入库 2.读入数据 进化过程 注意 具体安装步骤 声明 前言 基于遗传算法的BP ...

最新文章

  1. 让手机跑SOTA模型快8倍!Facebook AI开源最强全栈视频库:PyTorchVideo!
  2. monty python喜剧-50大最搞笑喜剧片,无厘头成必杀技!
  3. 学习JS的心路历程-参数传递方式(上)
  4. 系统监理师备考经验分享
  5. cadence -- FPM0.0.8.0生成skill工具集的方法
  6. 首次公开!单日600PB的计算力--阿里巴巴EB级大数据平台的进击
  7. Mybatis结果集映射
  8. comboBox绑定对象数组 c# 1614065159
  9. 认知NumPy数学运算库
  10. 解决JSP路径问题的方法(jsp文件开头path, basePath作用)
  11. update与fixedupdate差别
  12. 【OpenCV + Python】时域和频域傅里叶变换
  13. android人脸解锁亮屏,华为Mate 10升级人脸解锁:可能是最好用的安卓人脸识别
  14. C++死锁与哲学家就餐问题
  15. 纪念日该给女朋友送什么礼物?
  16. 战神遗迹服务器未响应怎么回事,战神遗迹黑屏闪退怎么处理
  17. python实现打卡
  18. 性能测试脚本的编写和调试
  19. 一个springboot+layui开发模板
  20. 一点关于Linux mv/rm命令的“有趣事“

热门文章

  1. python中pop用法_Python Set pop()用法及代码示例
  2. java线程详解_Java线程详解
  3. Keras-4 mnist With CNN
  4. VOA ECONOMICS REPORT - Junior Achievement Marks 90 Years of Business Education
  5. Golang 在十二赞的深度应用
  6. SSE图像算法优化系列二十一:基于DCT变换图像去噪算法的进一步优化(100W像素30ms)。...
  7. html5 canvas 头像上传
  8. Notepad++ 大小写转换
  9. rhel6.3下使用openssl来生成CA证书并颁发证书实例解析
  10. Linux下文本编辑 .