edr_distance#
- edr_distance(x: ndarray, y: ndarray, window: float | None = None, itakura_max_slope: float | None = None, bounding_matrix: ndarray | None = None, epsilon: float | None = None, **kwargs: Any) float[源代码][源代码]#
计算两个序列之间的真实序列编辑距离(EDR)。
EDR 计算必须从 x 和 y 中移除的最小元素数量(以百分比表示),以便剩余信号元素之间的距离之和在容差(epsilon)范围内。EDR 最初在 [1] 中提出。
返回的值将介于每个时间序列的 0 到 1 之间。该值将表示为必须移除的元素的百分比,以便时间序列完全匹配。
- 参数:
- x: np.ndarray (1d 或 2d 数组)
第一个时间序列。
- y: np.ndarray (1d 或 2d 数组)
第二个时间序列。
- window: float, defaults = None
这是Sakoe-Chiba下界窗口的半径(如果使用Sakoe-Chiba下界)。值必须在0.和1.之间。
- itakura_max_slope: float, 默认值 = None
Itakura 平行四边形的斜率梯度(如果使用 Itakura 平行四边形下界)。值必须在 0. 和 1. 之间。
- bounding_matrix: np.ndarray (二维数组), 默认 = None
自定义使用的边界矩阵。如果定义了,则忽略其他 lower_bounding 参数。矩阵的结构应使得在边界内的索引值为 0,而边界外的索引值应为无穷大。
- epsilonfloat, 默认值 = None
匹配阈值,用于确定两个子序列是否被认为足够接近,从而被视为’常见’。如果没有按照原始论文指定,则 epsilon 设置为最大标准差的四分之一。
- **kwargs: 任何
额外关键字参数。
- 返回:
- 浮动
x 和 y 之间的 EDR 距离。该值将在 0.0 到 1.0 之间,其中 0.0 表示时间序列之间的完全匹配(即它们是相同的),而 1.0 表示没有匹配的子序列。
- 引发:
- ValueError
如果 sakoe_chiba_window_radius 不是浮点数。如果 itakura_max_slope 不是浮点数。如果提供的 x 或 y 的值不是 numpy 数组。如果 x 或 y 的值超过 3 维。如果提供了度量字符串,但不是定义的有效字符串。如果提供了度量对象(类的实例)并且不继承自 NumbaDistance。如果无法确定度量类型。如果同时设置了 window 和 itakura_max_slope。
参考文献
[1]Lei Chen, M. Tamer Özsu, 和 Vincent Oria. 2005. 鲁棒且快速的相似性
搜索移动物体轨迹。在2005年ACM SIGMOD国际数据管理会议(SIGMOD ‘05)上的论文集。美国纽约州纽约市,计算机协会,491-502页。DOI:https://doi.org/10.1145/1066157.1066213
示例
>>> import numpy as np >>> from sktime.distances import edr_distance >>> x_1d = np.array([1, 2, 3, 4]) # 1d array >>> y_1d = np.array([5, 6, 7, 8]) # 1d array >>> edr_distance(x_1d, y_1d) 1.0
>>> x_2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) # 2d array >>> y_2d = np.array([[9, 10, 11, 12], [13, 14, 15, 16]]) # 2d array >>> edr_distance(x_2d, y_2d) 1.0