Python mlpy-动态时间扭曲取决于x?
我试图通过DTW获得下面显示的两个阵列之间的距离。 我正在使用PythonPython 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
mlpy
包,该包提供
dist, cost, path = mlpy.dtw_std(y1, y2, dist_only=False)
我知道DTW确实负责“转移”。此外,从上面可以看出,mlpy.dtw_std()
只接受2个一维数组。因此,我希望无论我如何左/右移动曲线,函数返回的dist
都不会改变
但是,将绿色曲线向右移动一点后,mlpy.dtw_std()
返回的dist
会发生变化
移位前:Pythonmlpy.dwt\u std
报告dist=14.014
移位后:Pythonmlpy.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值将更改。