ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – mlpy – 动态时间扭曲取决于x?

2019-06-29 09:43:43  阅读:250  来源: 互联网

标签:python algorithm pattern-matching machine-learning data-mining


我试图通过DTW获得下面显示的这两个数组之间的距离.

我正在使用提供的Python mlpy包

dist, cost, path = mlpy.dtw_std(y1, y2, dist_only=False)

据我所知,DTW确实照顾了“转移”.另外,从上面可以看出,mlpy.dtw_std()只接受2个1-D数组.所以我希望无论我如何左/右移动我的曲线,函数返回的dist都不会改变.

然而,在将我的绿色曲线向右移动一点之后,mlpy.dtw_std()返回的dist会发生变化!

在转移之前:Python mlpy.dwt_std报告dist = 14.014

转移后:Python mlpy.dwt_std报告dist = 38.078

显然,由于曲线仍然是那两条曲线,我不认为距离会有所不同!

为什么会这样?出了什么问题?

解决方法:

让我重申我的理解,如果我在任何地方出错,请纠正我.我观察到,在你的两个地块中,你的蓝色1D系列保持相同,而绿色则被拉伸.你是如何做到的,你在2013年9月19日9:36的帖子中解释过它.你的前提是,因为(1)DTW’照顾’时移;(2)你正在做的所有事情是延长一个时间序列长度,不影响y值,(推理:)你期望距离保持不变.

[(1),(2)]和[(推理)]之间有一点缺失的联系.也就是说,与映射相对应的单个距离值会随着您更改信号本身而发生变化.这将导致整体距离计算的差异.绘制翘曲路径,成本网格以便自己查看.

让我们看一个过于简单的案例……


 a =范围(0,101,5)= [0,5,10,15 … 95,100]

和b =范围(0,101,5)= [0,5,10,15 … 95,100].

现在直观地说,你/我希望2个信号之间一一对应(用于DTW映射),并且所有映射的距离都是0,信号看起来相同.

现在如果我们做,b =范围(0,101,4)= [0,4,8,12 … 96,100],
a和b之间的DTW映射仍然会以0映射到b的0开始,并以100的结束映射到b的100(边界约束).此外,由于DTW’负责’时移,我还希望两个信号中的20,40,60和80相互映射. (我没有试过DTWing这两个,从直觉上说,所以请检查.根据允许的步骤模式/全局限制,几乎不可能发生非直观的扭曲,但让我们直观的扭曲易于理解/简单的时刻).

对于剩余的数据点,显然,对应于映射的距离现在是非零的,因此总距离也是非零的.我们的距离/总成本值已从零变为非零值.

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

标签:python,algorithm,pattern-matching,machine-learning,data-mining
来源: https://codeday.me/bug/20190629/1325343.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有