Python中的动态时间扭曲

2024-04-18 21:03:07 发布

您现在位置:Python中文网/ 问答频道 /正文

有人知道有DTW实现的python库吗?mlpy似乎有我要找的东西,但我似乎无法正确安装它——目前正在等待邮件列表的答复,所以我想我可以找出其他库。


Tags: 列表邮件dtwmlpy
2条回答

不得不插嘴。为了跟踪C的响应,这里有一个实现,它更倾向于与在NumPy中生成的数据接口。我发现这非常有用,因为通常我是用Python生成数据并希望与R资源交互。

import numpy as np

import rpy2.robjects.numpy2ri
from rpy2.robjects.packages import importr

rpy2.robjects.numpy2ri.activate()

# Set up our R namespaces
R = rpy2.robjects.r
DTW = importr('dtw')

# Generate our data
idx = np.linspace(0, 2*np.pi, 100)
template = np.cos(idx)
query = np.sin(idx) + np.array(R.runif(100))/10

# Calculate the alignment vector and corresponding distance
alignment = R.dtw(query, template, keep=True)
dist = alignment.rx('distance')[0][0]

print(dist)

注意,这是DTW site上所述的示例问题。

作为记录,我可以使用RDTW in Rrpy2的mashup。在Python中使用R非常简单,并且极大地扩展了Python的统计功能。下面是一个查找偏移噪声正弦和余弦序列之间距离的示例:

    import rpy2.robjects as robjects
    r = robjects.r
    r('library("dtw")')
    idx = r.seq(0,6.28,len=100)
    template = r.cos(idx)
    query = r.sin(idx)+r('runif(100)/10')
    alignment=r.dtw(query,template,keep=r('TRUE'))
    robjects.globalenv["alignment"] =  alignment
    dist = r('alignment$distance')
    print(dist)

相关问题 更多 >