tslearn.metrics.dtw_subsequence_path

tslearn.metrics.dtw_subsequence_path(subseq, longseq, be=None)[source]

计算(可能是多维的)查询与长时间序列之间的子序列动态时间规整(DTW)相似度度量,并返回路径和相似度。

DTW 计算为对齐时间序列之间的欧几里得距离, 即,如果 \(\pi\) 是对齐路径:

\[DTW(X, Y) = \sqrt{\sum_{(i, j) \in \pi} \|X_{i} - Y_{j}\|^2}\]

与传统DTW相比,这里放宽了对可接受路径\(\pi\)的边界约束,使得\(\pi_0 = (0, ?)\)\(\pi_L = (N-1, ?)\),其中\(L\)是所考虑路径的长度,\(N\)是子序列时间序列的长度。

不要求两个时间序列的大小相同,但它们必须具有相同的维度。此实现找到subseqlongseq内部最佳匹配的起始和结束位置。

Parameters:
subseqarray-like, shape=(sz1, d) or (sz1,)

查询时间序列。 如果形状是 (sz1,),则假定时间序列是单变量的。

longseqarray-like, shape=(sz2, d) or (sz2,)

一个参考(假设比subseq更长)时间序列。 如果形状是(sz2,),则假设时间序列是单变量的。

beBackend object or string or None

后端。如果 be 是类 NumPyBackend 的实例或字符串 “numpy”,则使用 NumPy 后端。 如果 be 是类 PyTorchBackend 的实例或字符串 “pytorch”,则使用 PyTorch 后端。 如果 beNone,则后端由输入数组决定。 更多信息请参阅我们的 专用用户指南页面

Returns:
list of integer pairs

匹配路径表示为索引对的列表。在每一对中,第一个索引对应于subseq,第二个索引对应于longseq

float

相似度分数

另请参阅

dtw

获取DTW的相似度分数

subsequence_cost_matrix

计算所需的成本矩阵

subsequence_path

手动计算匹配路径

示例

>>> path, dist = dtw_subsequence_path([2., 3.], [1., 2., 2., 3., 4.])
>>> path
[(0, 2), (1, 3)]
>>> dist
0.0