文章目录

  • DTW是干什么的?
  • 代码
  • 结果说明及分析比较
  • Reference

DTW是干什么的?

动态时间规整算法,故名思议,就是把两个代表同一个类型的事物的不同长度序列进行时间上的“对齐”。比如DTW最常用的地方,语音识别中,同一个字母,由不同人发音,长短肯定不一样,把声音记录下来以后,它的信号肯定是很相似的,只是在时间上不太对整齐而已。所以我们需要用一个函数拉长或者缩短其中一个信号,使得它们之间的误差达到最小。

DTW有多有用呢?在知网检索一下主题为DTW的文献就知道了,结果如下图,可以看到有3000+的文献!

DTW是这么好的工具,那怎么实现DTW呢?其实前人早已做好了的,不需要自己再重复劳动了!下边介绍四种实现DTW的方法,并比较了耗时的情况。

代码

import numpy as np
np.random.seed(0)
a = np.random.normal(3, 2.5, size=(2, 1000))# 使用tslearn计算dtw距离
import time as t
time1 = t.time()
from tslearn.metrics import dtw
dist_ts = dtw(a[0], a[1])
time2 = t.time()
cost_ts = time2-time1# 使用dtw计算dtw距离
time1 = t.time()
from dtw import dtw
from numpy.linalg import norm
dist_dtw, cost, acc_cost, path = dtw(a[0].reshape(-1, 1),a[1].reshape(-1, 1),dist=lambda x, y: norm(x - y, ord=1)
)
time2 = t.time()
cost_dtw = time2-time1# 使用fastdtw计算dtw距离
time1 = t.time()
from fastdtw import fastdtw
from scipy.spatial.distance import euclidean
dist_fast, path1 = fastdtw(a[0], a[1], dist=euclidean)
time2 = t.time()
cost_fast = time2-time1# 使用dtaidistance计算dtw距离
time1 = t.time()
from dtaidistance import dtw
dist_dtai = dtw.distance_fast(a[0], a[1])
time2 = t.time()
cost_dtai = time2-time1

结果说明及分析比较

结果如下:

可以发现使用四种方法计算得到的dtw距离不完全相同,这一点很疑惑。知道为什么的大佬可以在评论里指点一下。

时间性能这方面,dtaidistance>>fastdtw>>tslearn>dtw,其中dtw库耗时最长,性能最差,dtaidistance性能最佳。

也就是说dtaidistance这个库是最好用的。

Reference

  1. tslearn.metrics.dtw
  2. dtw
  3. fastDTW
  4. dtaidistance

python分别使用dtw、fastdtw、tslearn、dtaidistance四个库计算dtw距离,哪个计算速度最快?相关推荐

  1. python gpu编程_Python笔记_第四篇_高阶编程_进程、线程、协程_5.GPU加速

    Numba:高性能计算的高生产率 在这篇文章中,笔者将向你介绍一个来自Anaconda的Python编译器Numba,它可以在CUDA-capable GPU或多核cpu上编译Python代码.Pyt ...

  2. [python opencv 计算机视觉零基础到实战] 四、了解色彩空间及其详解

    一.学习目标 了解什么是色彩空间 了解opencv中色彩空间的转换 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的helloworld [[python opencv ...

  3. python 聚类_聚类算法中的四种距离及其python实现

    欧氏距离 欧式距离也就是欧几里得距离,是最常见也是最简单的一种距离,再n维空间下的公式为: 在python中,可以运用scipy.spatial.distance中的pdist方法来实现,但需要调整其 ...

  4. python爬虫(四)_urllib2库的基本使用

    python爬虫(四)_urllib2库的基本使用 本篇我们将开始学习如何进行网页抓取,更多内容请参考:python学习指南 urllib2库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源 ...

  5. [Python从零到壹] 五十四.图像增强及运算篇之局部直方图均衡化和自动色彩均衡化处理

    首先,祝大家教师节和中秋节快乐! 欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文 ...

  6. 计算机二级Python历年真题解答(第四套)

    计算机二级Python历年真题解答(第四套) 写在前面 基础操作 1-1 1-2 1-3 简单应用 2-1 2-2 综合应用 3-1 3-2 3-3 写在前面 代码与参考答案不一定相同,但结果一致,真 ...

  7. 【Python学习笔记—保姆版】第四章—关于Pandas、数据准备、数据处理、数据分析、数据可视化

    第四章 欢迎访问我搞事情的[知乎账号]:Coffee 以及我的[B站漫威剪辑账号]:VideosMan 若我的笔记对你有帮助,请用小小的手指,点一个大大的赞哦. #编译器使用的是sypder,其中&q ...

  8. 学习 Python 之 Pygame 开发魂斗罗(四)

    学习 Python 之 Pygame 开发魂斗罗(四) 继续编写魂斗罗 1. 创建子弹类 2. 根据玩家方向和状态设置子弹发射的位置 (1). 站立向右发射子弹 (2). 站立向左发射子弹 (3). ...

  9. 【python】将bytes转换为float* 每四字节转化为float

    [python]将bytes转换为float* 每四字节转化为float FEATURE_SIZE = 256 def Bytes2Float32String(feature):x = "& ...

最新文章

  1. codevs 1047 邮票面值设计
  2. wpf 图表控件_LightningChart为外汇衍生品交易商提供数据可视化图表支持
  3. php多人点餐可以看到对方点的菜,千万不要小看你身边那个会点菜的人,因为
  4. 什么是UIScrollView
  5. 禁忌搜索算法c语言代码,禁忌搜索算法CC++源代码.doc
  6. rocketmq 消息删除_清空rocketmq消息方法
  7. qua数据统计缺失问题之终结
  8. 网络安全涉及到的知识积累(1)
  9. 论文笔记二 Positive, Negative and Neutral: Modeling Implicit Feedback inSession-based News Recommendatio。
  10. 在线IDE- Gitpod介绍
  11. Foobar 2000 EIKO 增强版 取消“最小化到托盘”设置
  12. DataFrame.to_excel多次写入不同Sheet
  13. key_t键和ftok函数
  14. QGIS基础教程 (入门级)——下载安装、新建工程、加载数据
  15. Excel导入导出详细教程------EasyExcel功能整合
  16. 什么是SEO网站快速排名?
  17. Java中的偏向锁是什么
  18. HTML锚点定位+平滑滚动
  19. 今日头条适配方案_煮酒论英雄之屏幕适配
  20. 打印服务的乱码故障处理

热门文章

  1. 男生让女生厌恶的10大习惯
  2. 十大高蛋白质食品 补充蛋白质的最佳选择
  3. 销售员如何巧妙地提问了解客户真实需求
  4. xtrabackup 的全备和恢复
  5. pygame创建窗口后窗口未响应,或pygame 窗口每次无法正常关闭
  6. 4g网络什么时候淘汰_5G手机的呼声越来越大,那4G手机还有多久被淘汰?这个时间要记住...
  7. [转] 写给未来的程序媛 ----- 加油,姑娘~
  8. 换不锈钢脸盆的ipad充当win10拓展屏 超简单!!!!(spacedesk)
  9. (CSU - 1972)大梵天的恩赐
  10. 丰下巴怎么做安全最有效