tslearn.metrics.lcss_path¶
- tslearn.metrics.lcss_path(s1, s2, eps=1, global_constraint=None, sakoe_chiba_radius=None, itakura_max_slope=None, be=None)[source]¶
计算(可能是多维的)时间序列之间的最长公共子序列(LCSS)相似度度量,并返回路径和相似度。
LCSS通过匹配直到达到eps阈值的索引来计算,因此它会留下一些未匹配的点,并专注于两个序列的相似部分。即使时间索引不同,匹配也可能发生,这可以通过定义它可以走多远的sakoe chiba半径参数来调节。
为了从最长公共子序列的长度中检索出有意义的相似度值,返回该值相对于最短时间序列长度的百分比。
根据这个定义,LCSS返回的值范围从0到1,当两个时间序列完全匹配时取最高值,反之亦然。不要求两个时间序列具有相同的大小,但它们必须具有相同的维度。LCSS最初在[1]中提出,并在我们的专用用户指南页面中进行了更详细的讨论。
- Parameters:
- s1array-like, shape=(sz1, d) or (sz1,)
一个时间序列。如果形状是 (sz1,),则假定时间序列是单变量的。
- s2array-like, shape=(sz2, d) or (sz2,)
另一个时间序列。如果形状是 (sz2,),则假定时间序列是单变量的。
- epsfloat (default: 1.)
最大匹配距离阈值。
- global_constraint{“itakura”, “sakoe_chiba”} or None (default: None)
全局约束以限制LCSS的可接受路径。
- sakoe_chiba_radiusint or None (default: None)
用于Sakoe-Chiba带全局约束的半径。 如果为None且global_constraint设置为“sakoe_chiba”,则使用半径为1。 如果同时设置了sakoe_chiba_radius和itakura_max_slope, 则使用global_constraint来推断在这两者中使用哪个约束。 在这种情况下,如果global_constraint不对应任何全局约束, 则会引发RuntimeWarning并且不使用任何全局约束。
- itakura_max_slopefloat or None (default: None)
Itakura平行四边形约束的最大斜率。 如果为None且global_constraint设置为“itakura”,则使用最大斜率为2。 如果同时设置了sakoe_chiba_radius和itakura_max_slope, 则使用global_constraint来推断使用哪种约束。在这种情况下,如果global_constraint不对应任何全局约束,则会引发RuntimeWarning并且不使用任何全局约束。
- beBackend object or string or None
后端。如果 be 是类 NumPyBackend 的实例或字符串 “numpy”,则使用 NumPy 后端。 如果 be 是类 PyTorchBackend 的实例或字符串 “pytorch”,则使用 PyTorch 后端。 如果 be 是 None,则后端由输入数组决定。 更多信息请参阅我们的 专用用户指南页面。
- Returns:
- list of integer pairs
匹配路径表示为索引对的列表。在每一对中,第一个索引对应于s1,第二个索引对应于s2。
- float
相似度分数
另请参阅
lcss仅获取LCSS的相似度分数
lcss_path_from_metric使用用户定义的距离度量计算LCSS
参考文献
[1]M. Vlachos, D. Gunopoulos, 和 G. Kollios. 2002. “发现相似的多维轨迹”,在第十八届国际数据工程会议(ICDE '02)的会议录中。IEEE计算机协会,美国,673页。
示例
>>> path, sim = lcss_path([1., 2., 3.], [1., 2., 2., 3.]) >>> path [(0, 1), (1, 2), (2, 3)] >>> sim 1.0 >>> lcss_path([1., 2., 3.], [1., 2., 2., 4.])[1] 1.0