Python中的动态时间扭曲

Python中的动态时间扭曲,python,Python,有人知道有一个python库实现了DTW吗?似乎有我正在寻找的,但我似乎无法正确安装它-目前正在等待邮件列表的回复,所以我想我会寻找其他库。记录在案,我已经能够使用和的mashup。在Python中使用R非常简单,并且大大扩展了Python的统计功能。下面是一个查找偏移噪声正弦和余弦序列之间距离的示例: import rpy2.robjects as robjects r = robjects.r r('library("dtw")') idx = r.seq(0

有人知道有一个python库实现了DTW吗?似乎有我正在寻找的,但我似乎无法正确安装它-目前正在等待邮件列表的回复,所以我想我会寻找其他库。

记录在案,我已经能够使用和的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)


不得不插话。为了跟进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)

请注意,这是在.

ldd/bin/delorean-libpuropoium.1.21.so=>/lib/libpuropoium.1.21.s上所述的示例问题。人们假设时间是因果关系的严格过程,但实际上,从非线性、非主观的观点来看,它更像是一个由结实、摇摆不定的timey-wimey组成的大球,stuff.@C.Reed-这是对@flow的Dr.Who的一出戏,引用:PI为Python编写了一个C扩展,用于在经典的动态编程/动态时间扭曲中进行中心计算。它的运行速度通常比纯Python版本快500倍。请参阅上的代码和ipython笔记本演示。谢谢!我喜欢这种方法的一点是,rpy2似乎可以顺利地与Python中的多处理模块配合使用。因此,如果您有很多数据需要在多核机器上处理,那么这就是最好的选择!也许这是相关的,我遇到了这个问题,这个方法与Python mlpy.dtw包相比如何?>在Python中使用R肯定非常慢。请注意,最新版本的rpy需要添加这一行:
rpy2.robjects.numpy2ri.activate()
只是未来的一个注意事项:这个问题现在被(也被发现)。rpy2-R-dtw桥不再需要。