[ PROMPT_NODE_26190 ]
segmentation
[ SKILL_DOCUMENTATION ]
# 时间序列分割
Aeon 提供了将时间序列划分为具有不同特征区域的算法,用于识别变化点和边界。
## 分割算法
### 二分分割
- `BinSegmenter` - 递归二分分割
- 在最显著的变化点处迭代分割序列
- 参数:`n_segments`, `cost_function`
- **适用场景**:已知段数,具有层级结构时
### 基于分类的分割
- `ClaSPSegmenter` - 分类评分概况 (Classification Score Profile)
- 使用分类性能来识别边界
- 发现分类器能区分邻域的段
- **适用场景**:各段具有不同时间模式时
### 基于快速模式的分割
- `FLUSSSegmenter` - 快速低成本单能语义分割
- 使用弧交叉的高效语义分割
- 基于矩阵概况 (Matrix Profile)
- **适用场景**:长序列,需要速度和模式发现时
### 信息论
- `InformationGainSegmenter` - 信息增益最大化
- 寻找使信息增益最大化的边界
- **适用场景**:各段之间存在统计差异时
### 高斯建模
- `GreedyGaussianSegmenter` - 贪婪高斯近似
- 将段建模为高斯分布
- 增量添加变化点
- **适用场景**:各段遵循高斯分布时
### 层级聚合
- `EAggloSegmenter` - 自下而上的合并方法
- 通过聚合估计变化点
- **适用场景**:需要层级分割结构时
### 隐马尔可夫模型
- `HMMSegmenter` - 带有 Viterbi 解码的 HMM
- 基于概率状态的分割
- **适用场景**:各段代表隐藏状态时
### 基于维度的分割
- `HidalgoSegmenter` - 异构内在维度算法
- 检测局部维度的变化
- **适用场景**:各段之间维度发生偏移时
### 基准
- `RandomSegmenter` - 随机变化点生成
- **适用场景**:需要零假设基准时
## 快速入门
python
from aeon.segmentation import ClaSPSegmenter
import numpy as np
# 创建带有状态变化的时间序列
y = np.concatenate([
np.sin(np.linspace(0, 10, 100)), # 第 1 段
np.cos(np.linspace(0, 10, 100)), # 第 2 段
np.sin(2 * np.linspace(0, 10, 100)) # 第 3 段
])
# 分割序列
segmenter = ClaSPSegmenter()
change_points = segmenter.fit_predict(y)
print(f"检测到的变化点: {change_points}")
#