如何限制来自dtw-python库的dtw?

问题描述

这就是我想要做的:

  • 保持参考曲线不变(仅平移和拉伸查询曲线)
  • 限制重复的元素数量
  • 保持开始和结束打开

我尝试过:

dtw(ref_curve,query_curve,step_pattern=asymmetric,open_end=True,open_begin=True)

但是我不能限制查询曲线的拉伸方式

dtw(ref_curve,step_pattern=mvmStepPattern(10))

它对曲线没有任何作用!

dtw(ref_curve,step_pattern=rabinerJuangStepPattern(4,"c"),open_begin=True)

我最喜欢这一点,但在某些情况下,它会使查询曲线偏移得过多……

我阅读了论文(https://www.jstatsoft.org/article/view/v031i07)和API,但仍然不太了解如何实现我想要的目标。还有其他选择来限制重复元素的数量吗?感谢您的帮助!

解决方法

澄清一下:我们在dynamictimewarping.github.io上讨论DTW套件软件包提供的功能。这个问题实际上是与语言无关的(并且可能更适合于交叉验证堆栈交换)。

您发现的模式rabinerJuangStepPattern(4,"c")实际上满足您的要求:

  1. 它是不对称的,每一步都会使参考前进一整步
  2. 它的斜率限制在1/2和2之间
  3. 它是“ c”类型,因此可以以允许开端和开端的方式进行标准化

如果还没有,请签出dtw.rabinerJuangStepPattern(4,"c").plot()

毋庸置疑,在所有情况下,您都能获得最佳对准,即在所有允许路径中累积距离最小的对准。

作为替代方案,您可以考虑将更简单的asymmetric递归(这是您的上述第一次尝试),并受 global 翘曲窗口限制:请参见dtw.window和{ {1}}参数。这样可以提供不同形状(和灵活大小)的约束,这可能适合您的特定情况。

PS:编辑后增加了window_type递归也类似于RJ-4c,但是斜率更受限制。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...