lcss_distance#

lcss_distance(x: ndarray, y: ndarray, window: float | None = None, itakura_max_slope: float | None = None, bounding_matrix: ndarray | None = None, epsilon: float = 1.0, **kwargs: Any) float[source]#

计算两个时间序列之间的最长公共子序列 (LCSS) 分数。

LCSS 试图找出两个时间序列之间的最长公共序列,并返回一个值,该值是最长公共序列的比例。LCSS 最初出现在 [1] 中,通过匹配在达到定义的阈值 (epsilon) 之前相似的索引来计算。

返回的值将在 0.0 到 1.0 之间,其中 0.0 表示两个时间序列完全相同,1.0 表示它们完全不同。

参数:
x: np.ndarray (1d 或 2d 数组)

第一个时间序列。

y: np.ndarray (1d 或 2d 数组)

第二个时间序列。

window: float, 默认值 = None

float,是 Sakoe-Chiba 窗口的半径(如果使用 Sakoe-Chiba 下界)。值必须在 0. 到 1. 之间。

itakura_max_slope: float, 默认值 = None

Itakura 平行四边形的斜率梯度(如果使用 Itakura 平行四边形下界)。值必须在 0. 到 1. 之间。

bounding_matrix: np.ndarray (2d 数组,大小为 mxn,其中 m 为 len(x),n 为 len(y)),

默认值 = None

要使用的自定义边界矩阵。如果定义,则忽略其他 lower_bounding 参数。矩阵的结构应使得在边界内考虑的索引值为 0.,边界矩阵外的索引值为无穷大。

epsilonfloat, 默认值 = 1.

匹配阈值,用于确定两个子序列是否足够接近以被视为“公共”。

kwargs: Any

额外关键字参数。

返回值:
float

x 和 y 之间的 LCSS 距离。返回的值将在 0.0 到 1.0 之间,其中 0.0 表示两个时间序列完全相同,1.0 表示它们完全不同。

引发:
ValueError

如果 sakoe_chiba_window_radius 不是 float。如果 itakura_max_slope 不是 float。如果提供的 x 或 y 值不是 numpy 数组。如果 x 或 y 的值超过 2 个维度。如果提供了指标字符串,但不是有效的定义字符串。如果提供了指标对象(类实例)且未继承自 NumbaDistance。如果无法确定指标类型。如果 window 和 itakura_max_slope 都已设置。

参考

[1]

M. Vlachos, D. Gunopoulos, and G. Kollios. 2002. “Discovering Similar Multidimensional Trajectories”, In Proceedings of the 18th International Conference on Data Engineering (ICDE ‘02). IEEE Computer Society, USA, 673.