rpy2 dtw 缺少参数 window.size [英] rpy2 dtw missing argument window.size

查看:57
本文介绍了rpy2 dtw 缺少参数 window.size的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用带有 rpy2 的 R DTW 包.我希望能够指定运行 DTW 分析的窗口类型和大小.

I'm using the R DTW package with rpy2. I would like to be able specify a window type and size for running the DTW analysis.

我已经运行了以下代码:

I have run the following code:

import numpy as np
import rpy2.robjects as robjects
import rpy2.robjects.numpy2ri
rpy2.robjects.numpy2ri.activate()

r = robjects.r
r('library("dtw")')

query = np.array([0.0,1.0,2.0,3.0])
reference = np.array([0.0,1.9,2.4,3.0])

# Attempt 1:
kwargs = {'step':r("asymmetric"),'window_type':r("sakoeChibaWindow"),'window_size':r("as.integer(\"3\")")}
alig = r.dtw(query, reference, **kwargs)

# Attempt 2:
alig = r.dtw(query, reference, keep=r('TRUE'), step=r('asymmetric'),window_type=r('sakoeChibaWindow'),window_size="as.integer(\"3\")")

# Attempt 3:
alig = r.dtw(query, reference, keep=r('TRUE'), step=r('asymmetric'),window_type=r('sakoeChibaWindow'),window_size=3)

# Note: The line of code below works correctly.
# alig = r.dtw(query, reference, keep=r('TRUE'), step=r('asymmetric'))

robjects.globalenv["alignment"] =  alig
print r('alignment$distance')

我收到以下错误消息:

Error in abs(jw - iw) <= window.size : 'window.size' is missing
Traceback (most recent call last):
  File "testrdtw.py", line 19, in <module>
    alig = r.dtw(query, reference, **kwargs)
  File "/Users/jsmith/Dropbox/IW/env/lib/python2.7/site-packages/rpy2/robjects/functions.py", line 86, in __call__
    return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
  File "/Users/jsmith/Dropbox/IW/env/lib/python2.7/site-packages/rpy2/robjects/functions.py", line 35, in __call__
    res = super(Function, self).__call__(*new_args, **new_kwargs)
rpy2.rinterface.RRuntimeError: Error in abs(jw - iw) <= window.size : 'window.size' is missing

如何正确指定 window.size 参数以使其正确传递?

How do I properly specify the window.size argument such that it is passed correctly?

我对 R 和 rpy 很陌生,所以我很可能错误地使用了这些库.非常感谢任何建议、提示或帮助.

I'm quite new to R and rpy so I could very well be using these libraries incorrectly. Any suggestions,hints, or help greatly appreciated.

--js

推荐答案

这对我有用:

import numpy as np
import rpy2.robjects.numpy2ri
from rpy2.robjects.packages import importr

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

x = np.array([0.0, 1.0, 2.0, 3.0])
y = np.array([0.0, 1.9, 2.4, 3.0])

alignment1 = R.dtw(x, y, keep=True,  dist_method="Euclidean",step_pattern=DTW.asymmetric,type="sakoechiba")
alignment2 = R.dtw(x, y, keep=True, dist_method="Euclidean",step_pattern=DTW.symmetric1,type="itakura")
alignment3 = R.dtw(x, y, keep=True, dist_method="Euclidean", step_pattern=DTW.symmetric2, type=DTW.sakoeChibaWindow, window_size=2)
dist1 = alignment1.rx('distance')[0][0]
dist2 = alignment2.rx('distance')[0][0]
dist3= alignment3.rx('distance')[0][0]
print(dist1)
#1.0
print(dist2)
#1.3
print(dist3)
#1.3

文档 指出:window.type 可以也可以是用户定义的窗口函数.所有可用的窗口函数见 dtwWindowingFunctions"在那里你可以修复 window.size.

The documentation states:"window.type can also be an user-defined windowing function. See dtwWindowingFunctions for all available windowing functions" There u can fix the window.size.

希望能帮到你

这篇关于rpy2 dtw 缺少参数 window.size的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆