3

Я работаю над данными временных рядов. Доступные данные являются многовариантными. Таким образом, для каждого экземпляра времени доступно три точки данных. Формат:Библиотека/код многомерного/многомерного динамического преобразования времени (DTW) в Python

| X | Y | Z |

Так данные серии один раз в таком формате будет генерироваться в реальном масштабе времени. Я пытаюсь найти хорошее совпадение с этими временными рядами, созданными в реальном времени, в рамках других базовых данных временных рядов, которые уже хранятся (что намного больше по размеру и было собрано с другой частотой). Если я применяю стандартную DTW к каждой серии (X, Y, Z) отдельно, они могут получить совпадение в разных точках базовой базы данных, что является неблагоприятным. Поэтому мне нужно найти точку в базовой базе данных, где все три компонента (X, Y, Z) хорошо совпадают и находятся в одной и той же точке.

Я исследовал этот вопрос и выяснил, что многомерное DTW является идеальным решением такой проблемы. В R пакет dtw включает многомерный DTW, но я должен реализовать его в Python. Компонент R-Python, а именно «rpy2», возможно, может помочь здесь, но у меня нет опыта работы в R. Я просмотрел доступные пакеты DTW на Python, такие как mlpy, dtw, но не помогает. Может ли кто-нибудь предложить пакет в Python сделать то же самое или код для многомерного DTW, используя rpy2.

Заранее благодарен!

ответ

2

Я думаю, что это хорошая идея попробовать метод в любой реализации, которая уже доступна, прежде чем рассматривать вопрос о целесообразности работы над повторной реализацией.

Вы попробовали следующее?

from rpy2.robjects.packages import importr 
# You'll obviously need the R package "dtw" installed with your R 
dtw = importr("dtw") 

# all functions and objects in the R package "dtw" are now available 
# with `dtw.<function or object>` 
3

Благодаря @lgautier я выкопал глубже и нашел реализацию многофакторного DTW использования rpy2 в Python. Просто передавая шаблон и запрос в виде 2D-матриц (матриц, как в R), разрешает пакет rpy2 dtw делать многомерный DTW. Также, если у вас установлен R, загрузка библиотеки R dtw и «? Dtw» даст доступ к документации библиотеки и различным функциям, доступным в библиотеке.

Для будущей ссылки на другие пользователи с подобными вопросами: Официальной документацией пакета R Dtw: https://cran.r-project.org/web/packages/dtw/dtw.pdf Примера кода, передавая два 2-D матриц для многовариантного DTW, аргументы open_begin и open_e позволяют соответствие подпоследовательности:

import numpy as np 
import rpy2.robjects.numpy2ri 
rpy2.robjects.numpy2ri.activate() 
from rpy2.robjects.packages import importr 
import rpy2.robjects as robj 

R = rpy2.robjects.r 
DTW = importr('dtw') 

# Generate our data 
template = np.array([[1,2,3,4,5],[1,2,3,4,5]]).transpose() 
rt,ct = template.shape 
query = np.array([[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]]).transpose() 
rq,cq = query.shape 

#converting numpy matrices to R matrices 
templateR=R.matrix(template,nrow=rt,ncol=ct) 
queryR=R.matrix(query,nrow=rq,ncol=cq) 

# Calculate the alignment vector and corresponding distance 
alignment = R.dtw(templateR,queryR,keep=True, step_pattern=R.rabinerJuangStepPattern(4,"c"),open_begin=True,open_end=True) 

dist = alignment.rx('distance')[0][0] 

print dist 
+0

Hey @mosdkr, я в настоящее время пытаюсь реализовать многомерное динамическое деформирование времени для кластеризации моих временных рядов. Я не мог понять ваш пример. Создает ли шаблон временные метки для 5-D данных. Что такое запрос? Заранее спасибо . –

+0

Привет, поэтому приведенный выше пример выполняет сопоставление шаблонов с использованием подпоследовательности DTW, пытаясь найти, какая подчасти/подпоследовательность запроса совпадает с шаблоном. Шаблон представляет собой матрицу 5X2, что означает, что это двубайтные данные и имеет 5 точек данных (5 временных меток) для каждой из двух переменных, запрос снова представляет собой двузначные данные, но с 16 точками данных. – mosdkr

+0

Большое спасибо! Вы попробовали mlpy или думаете, что в нем многовариантный DTW. http://mlpy.sourceforge.net/docs/3.5/ –

Смежные вопросы