Динамическое деформирование времени в Python

Кто-нибудь знает библиотеку python с реализацией DTW? mlpy, похоже, имеет то, что я ищу, но я не могу установить его правильно - в настоящее время ждут ответов от рассылки поэтому я решил, что я буду использовать другие библиотеки.

Ответ 1

Для записи я смог использовать mashup R, DTW в R и rpy2. Работа с R в Python удивительно проста и значительно расширяет статистические возможности 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)

Ответ 2

Пришлось перезвонить этому. Чтобы следить за ответами C, здесь реализована реализация, которая больше ориентирована на взаимодействие с данными, генерируемыми в NumPy. Я считаю, что это значительно более полезно, поскольку я обычно генерирую данные на Python и хочу взаимодействовать с R ресурсами.

import numpy as np

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

# 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-сайте.