DTW是干什么的?
动态时间规整算法,故名思议,就是把两个代表同一个类型的事物的不同长度序列进行时间上的“对齐”。比如DTW最常用的地方,语音识别中,同一个字母,由不同人发音,长短肯定不一样,把声音记录下来以后,它的信号肯定是很相似的,只是在时间上不太对整齐而已。所以我们需要用一个函数拉长或者缩短其中一个信号,使得它们之间的误差达到最小。
DTW有多有用呢?在知网检索一下主题为DTW的文献就知道了,结果如下图,可以看到有3000+的文献!
DTW是这么好的工具,那怎么实现DTW呢?其实前人早已做好了的,不需要自己再重复劳动了!下边介绍四种实现DTW的方法,并比较了耗时的情况。
代码
import numpy as np
np.random.seed(0)
a = np.random.normal(3, 2.5, size