Python mlpy-动态时间扭曲取决于x?

Python mlpy-动态时间扭曲取决于x?,python,algorithm,machine-learning,pattern-matching,data-mining,Python,Algorithm,Machine Learning,Pattern Matching,Data Mining,我试图通过DTW获得下面显示的两个阵列之间的距离。 我正在使用Pythonmlpy包,该包提供 dist, cost, path = mlpy.dtw_std(y1, y2, dist_only=False) 我知道DTW确实负责“转移”。此外,从上面可以看出,mlpy.dtw_std()只接受2个一维数组。因此,我希望无论我如何左/右移动曲线,函数返回的dist都不会改变 但是,将绿色曲线向右移动一点后,mlpy.dtw_std()返回的dist会发生变化 移位前:Pythonmlpy.d

我试图通过DTW获得下面显示的两个阵列之间的距离。

我正在使用Python
mlpy
包,该包提供

dist, cost, path = mlpy.dtw_std(y1, y2, dist_only=False)
我知道DTW确实负责“转移”。此外,从上面可以看出,
mlpy.dtw_std()
只接受2个一维数组。因此,我希望无论我如何左/右移动曲线,函数返回的
dist
都不会改变

但是,将绿色曲线向右移动一点后,
mlpy.dtw_std()
返回的
dist
会发生变化

移位前:Python
mlpy.dwt\u std
报告
dist=14.014

移位后:Python
mlpy.dwt\u std
报告
dist=38.078
显然,由于曲线仍然是这两条曲线,我不期望距离会有所不同


为什么会这样?哪里出错了?

显然,曲线不相同,因此距离函数不能为0(否则,根据定义它不是距离)

什么是“相对大”?距离可能不是无限的,是吗

140个时间点,每个点都有一个小的增量,这仍然是一个非零的数字

“纽约”到“北京”的距离约为11018公里。或1101800000毫米

到半人马座阿尔法星的距离很小,只有4.34LJ。那是离我们最近的另一个恒星系统


与非相似序列的距离进行比较;这个距离应该大得多。

让我重申我所理解的,如果我哪里出了问题,请纠正我。我观察到,在这两个图中,蓝色的1D序列保持不变,而绿色的序列被拉伸。你是如何做到的,你已经在2013年9月19日9:36的帖子中解释过了。您的前提是,因为(1)DTW“注意”时间偏移,(2)您所做的只是按长度拉伸一个时间序列,而不影响y值,(推断:)您希望距离保持不变

[(1)、(2)]和[(推断)]之间缺少一点联系。也就是说,对应于映射的单个距离值将随着信号集本身的改变而改变。这将导致总体距离计算的差异绘制扭曲路径,使用网格亲自查看

让我们来看一个过于简单的例子

a=范围(0101,5)
=[0,5,10,15…95100]

b=范围(0101,5)
=[0,5,10,15…95100]

现在直观地说,您/我期望2个信号之间的一一对应(对于DTW映射),所有映射的距离为0,信号看起来相同

现在如果我们做,
b=range(0101,4)
=[0,4,8,12…96100], a和b之间的DTW映射仍将从a的0映射到b的0开始,并在a的100映射到b的100(边界约束)结束。此外,由于DTW“负责”时间偏移,我还希望两个信号中的20、40、60和80会相互映射。(我自己还没有尝试过对这两个进行数据处理,是出于直觉,所以请检查。根据允许的步进模式/全局约束,也不太可能发生非直觉扭曲,但为了便于理解/简单起见,现在让我们使用直觉扭曲)

对于其余的数据点,很明显,与映射相对应的距离现在是非零的,因此总体距离也是非零的。我们的距离/总成本值已从零变为非零

现在,当我们的信号过于简单,线性增加时,情况就是这样。想象一下,当你有现实生活中的非单调信号,并且需要找出它们之间的时间扭曲时,会出现什么样的变化


(注:请别忘了投赞成票,答案是D)。谢谢。

是的,我没说它们是一样的。但我希望系统能承认它们是相似的。我的问题是,假设我将红色曲线向右移动一点,那么我希望dtw报告的距离会更小,尽管它是相同的红色曲线。我问的是如何消除dwt上的移位效应。谢谢DTW应该在很大程度上负责移位,所以如果你手动移位,这应该不会对相似性造成太大影响。你是说我必须先手动移位,然后再应用DTW?好的,DTW报告的距离确实受到其相对位置的影响。请参考更新的问题,说明DTW如何随位移效应而变化。谢谢你是怎么轮班的?您是将DTW作为一维(仅y)系列还是二维(x,y)系列?这也有区别。你是怎么换档的?你能展示你的代码吗?如果将“人造”点添加到向量的开头,问题是这些点也需要映射,因此最终的DTW值将更改。