[ PROMPT_NODE_26182 ]
distances
[ SKILL_DOCUMENTATION ]
# 距离度量
Aeon 提供了专门用于衡量时间序列相似度的距离函数,兼容 aeon 和 scikit-learn 估计器。
## 距离类别
### 弹性距离
允许序列之间灵活的时间对齐:
**动态时间规整 (DTW) 系列:**
- `dtw` - 经典动态时间规整
- `ddtw` - 导数 DTW (比较导数)
- `wdtw` - 加权 DTW (按位置惩罚规整)
- `wddtw` - 加权导数 DTW
- `shape_dtw` - 基于形状的 DTW
**基于编辑:**
- `erp` - 具有实数惩罚的编辑距离
- `edr` - 实数序列上的编辑距离
- `lcss` - 最长公共子序列
- `twe` - 时间规整编辑距离
**专用:**
- `msm` - 移动-分割-合并距离
- `adtw` - 惩罚 DTW
- `sbd` - 基于形状的距离
**适用场景**:时间序列可能存在时间偏移、速度变化或相位差异时。
### 锁定步长距离
无需对齐即可逐点比较时间序列:
- `euclidean` - 欧几里得距离 (L2 范数)
- `manhattan` - 曼哈顿距离 (L1 范数)
- `minkowski` - 广义闵可夫斯基距离 (Lp 范数)
- `squared` - 平方欧几里得距离
**适用场景**:序列已经对齐,需要计算速度,或预期没有时间扭曲时。
## 使用模式
### 计算单个距离
python
from aeon.distances import dtw_distance
# 两个时间序列之间的距离
distance = dtw_distance(x, y)
# 带有窗口约束 (Sakoe-Chiba 带)
distance = dtw_distance(x, y, window=0.1)
### 成对距离矩阵
python
from aeon.distances import dtw_pairwise_distance
# 集合中所有成对距离
X = [series1, series2, series3, series4]
distance_matrix = dtw_pairwise_distance(X)
# 跨集合距离
distance_matrix = dtw_pairwise_distance(X_train, X_test)
### 代价矩阵和对齐路径
python
from aeon.distances import dtw_cost_matrix, dtw_alignment_path
# 获取完整代价矩阵
cost_matrix = dtw_cost_matrix(x, y)
# 获取最优对齐路径
path = dtw_alignment_path(x, y)
# 返回索引:[(0,0), (1,1), (2,1), (2,2), ...]
### 与估计器配合使用
python
from aeon.classification.distance_based import KNeighborsTimeSeriesClassifier
# 在分类器中使用 DTW 距离
clf = KNeighborsTimeSeriesClassifier(
n_neighbors=5,
distance="dtw",
distance_params={"window": 0.2}
)
clf.fit(X_train, y_train)
## 距离参数
### 窗口约束
限制规整路径偏差(提高速度和预测性能)