关于 alterlab-aeon
Aeon 是兼容 scikit-learn 的 Python 时间序列机器学习工具包,面向时间序列分析与建模。它涵盖从分类、预测到相似性搜索的多类任务,并提供专用距离度量与特征转换。
主要功能
- 01时间序列分类与回归
- 02聚类、预测与异常检测
- 03分段与相似性搜索
- 04特征提取和数据转换
- 05专用时间序列距离度量
适用场景
- 01根据时间序列进行分类或数值预测
- 02识别序列异常与变化点
- 03按模式对时间序列分组
- 04搜索重复或相似的时间序列片段
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-aeon安装后在 Claude Code 中输入/alterlab-aeon确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/anomaly_detection.mdclassification.mdclustering.mddatasets_benchmarking.mddistances.mdforecasting.mdnetworks.mdregression.mdsegmentation.mdsimilarity_search.mdtransformations.md详细介绍
Aeon 时间序列机器学习
概述
Aeon 是一个兼容 scikit-learn 的时间序列机器学习 Python 工具包。它提供用于分类、回归、聚类、预测、异常检测、分段和相似性搜索的先进算法。
何时使用此技能
在以下情况下应用此技能:
- 根据时间序列数据进行分类或预测
- 检测时间序列中的异常或变点
- 聚类相似的时间序列模式
- 预测未来值
- 查找重复模式(motif)或异常子序列(discord)
- 使用专用距离度量比较时间序列
- 从时间数据中提取特征
不适用的情况
| 场景 | 改用 |
|---|---|
| 使用预训练基础模型进行零样本预测,无需训练 | alterlab-timesfm |
| 使用 ARIMA/SARIMAX,需提供系数表、残差诊断和计量经济学推断 | alterlab-statsmodels |
| 使用普通表格特征(没有时间顺序)进行分类/回归 | alterlab-scikit-learn |
| 生理信号处理(ECG/EEG/EDA 峰值、HRV) | alterlab-neurokit2 |
安装
uv pip install "aeon>=1.6" # core; Python 3.11–3.14
uv pip install "aeon[dl]" # + TensorFlow/Keras for the deep-learning estimators
uv pip install stumpy # soft dependency of MatrixProfileTransformer
示例已根据 aeon 1.6.0 验证(截至 2026-09 的当前版本)。1.x 系列
重新组织了模块——预测器位于 aeon.forecasting.stats 下,序列异常检测器位于
aeon.anomaly_detection.series.* 下,相似性搜索位于
aeon.similarity_search.subsequence / .whole_series 下——因此,如果导入失败,请查阅
当前 API 参考,而不要假定使用的是旧路径。
核心功能
1. 时间序列分类
将时间序列归类到预定义类别。完整算法目录请参阅 references/classification.md。
快速入门:
from aeon.classification.convolution_based import RocketClassifier
from aeon.datasets import load_classification
# Load data
X_train, y_train = load_classification("GunPoint", split="train")
X_test, y_test = load_classification("GunPoint", split="test")
# Train classifier
clf = RocketClassifier(n_kernels=10000)
clf.fit(X_train, y_train)
accuracy = clf.score(X_test, y_test)
算法选择:
- 速度与性能:
MiniRocketClassifier、Arsenal - 最高准确率:
HIVECOTEV2、InceptionTimeClassifier - 可解释性:
ShapeletTransformClassifier、Catch22Classifier - 小型数据集:使用 DTW 距离的
KNeighborsTimeSeriesClassifier
2. 时间序列回归
根据时间序列预测连续值。算法请参阅 references/regression.md。
快速入门:
from aeon.regression.convolution_based import RocketRegressor
from aeon.datasets import load_regression
X_train, y_train = load_regression("Covid3Month", split="train")
X_test, y_test = load_regression("Covid3Month", split="test")
reg = RocketRegressor()
reg.fit(X_train, y_train)
predictions = reg.predict(X_test)
3. 时间序列聚类
对没有标签的相似时间序列进行分组。方法请参阅 references/clustering.md。
快速入门:
from aeon.clustering import TimeSeriesKMeans
clusterer = TimeSeriesKMeans(
n_clusters=3,
distance="dtw",
averaging_method="ba"
)
labels = clusterer.fit_predict(X_train)
centers = clusterer.cluster_centers_
4. 预测
预测未来的时间序列值。预测器请参阅 references/forecasting.md。
快速入门:
from aeon.forecasting.stats import ARIMA
# Orders are separate args (p, d, q) — not an `order` tuple.
forecaster = ARIMA(p=1, d=1, q=1)
forecaster.fit(y_train)
# predict(y) takes the series to forecast from and returns ONE float,
# `horizon` steps past the end of y (default 1). Calling predict() with no
# series raises TypeError in aeon 1.6.
next_step = forecaster.predict(y_train)
# For a multi-step path, use iterative_forecast (returns a 1D ndarray):
y_pred = forecaster.iterative_forecast(y_train, prediction_horizon=5)
5. 异常检测
识别异常模式或离群值。检测器请参阅 references/anomaly_detection.md。
快速入门:
import numpy as np
from aeon.anomaly_detection.series.distance_based import STOMP
detector = STOMP(window_size=50)
anomaly_scores = detector.fit_predict(y)
# Higher scores indicate anomalies
threshold = np.percentile(anomaly_scores, 95)
anomalies = anomaly_scores > threshold
6. 分段
根据变点将时间序列划分为多个区域。请参阅 references/segmentation.md。
快速入门:
from aeon.segmentation import ClaSPSegmenter
segmenter = ClaSPSegmenter()
change_points = segmenter.fit_predict(y)
7. 相似性搜索
查找单个或多个时间序列中的相似模式。请参阅 references/similarity_search.md。
快速入门:
from aeon.similarity_search.subsequence import MASS
# Searchers are fitted on a collection shaped (n_cases, n_channels, n_timepoints)
X = y.reshape(1, 1, -1)
query = X[0, :, 100:150] # (n_channels, length) — length must match
searcher = MASS(length=50, normalize=True).fit(X)
indexes, distances = searcher.predict(query, k=3) # rows are (case, timestamp)
aeon 1.6 不再附带 StompMotif 估计器。要计算 motif/discord,请使用
aeon.transformations.series.MatrixProfileTransformer 计算矩阵轮廓
(需要 stumpy):其极小值表示 motif,极大值表示 discord。
特征提取与变换
变换时间序列以进行特征工程。请参阅 references/transformations.md。
ROCKET 特征:
from aeon.transformations.collection.convolution_based import Rocket
rocket = Rocket()
X_features = rocket.fit_transform(X_train)
# Use features with any sklearn classifier
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(X_features, y_train)
统计特征:
from aeon.transformations.collection.feature_based import Catch22
catch22 = Catch22()
X_features = catch22.fit_transform(X_train)
预处理:
from aeon.transformations.collection import MinMaxScaler, Normalizer
scaler = Normalizer() # Z-normalization
X_normalized = scaler.fit_transform(X_train)
距离度量
专用时间距离度量。完整目录请参阅 references/distances.md。
用法:
from aeon.distances import dtw_distance, dtw_pairwise_distance
# Single distance
distance = dtw_distance(x, y, window=0.1)
# Pairwise distances
distance_matrix = dtw_pairwise_distance(X_train)
# Use with classifiers
from aeon.classification.distance_based import KNeighborsTimeSeriesClassifier
clf = KNeighborsTimeSeriesClassifier(
n_neighbors=5,
distance="dtw",
distance_params={"window": 0.2}
)
可用距离:
- 弹性距离:DTW、DDTW、WDTW、ERP、EDR、LCSS、TWE、MSM
- 逐步对齐距离:Euclidean、Manhattan、Minkowski
- 基于形状的距离:Shape DTW、SBD
深度学习网络
用于时间序列的神经网络架构。参见 references/networks.md。这些估计器需要安装 aeon[dl] 扩展(TensorFlow ≥ 2.14 / Keras 3,Python < 3.14)。
架构:
- 卷积:
FCNClassifier、ResNetClassifier、InceptionTimeClassifier - 循环:
RecurrentNetwork、TCNNetwork - 自编码器:
AEFCNClusterer、AEResNetClusterer
用法:
from aeon.classification.deep_learning import InceptionTimeClassifier
clf = InceptionTimeClassifier(n_epochs=100, batch_size=32)
clf.fit(X_train, y_train)
predictions = clf.predict(X_test)
数据集与基准测试
加载标准基准数据集并评估性能。参见 references/datasets_benchmarking.md。
加载数据集:
from aeon.datasets import load_classification, load_regression
# Classification
X_train, y_train = load_classification("ArrowHead", split="train")
# Regression
X_train, y_train = load_regression("Covid3Month", split="train")
基准测试:
from aeon.benchmarking.results_loaders import get_estimator_results
# Compare with published results (estimators + datasets are lists)
published = get_estimator_results(estimators=["ROCKET"], datasets=["GunPoint"])
常见工作流
分类流程
from aeon.transformations.collection import Normalizer
from aeon.classification.convolution_based import RocketClassifier
from sklearn.pipeline import Pipeline
pipeline = Pipeline([
('normalize', Normalizer()),
('classify', RocketClassifier())
])
pipeline.fit(X_train, y_train)
accuracy = pipeline.score(X_test, y_test)
特征提取 + 传统机器学习
from aeon.transformations.collection.convolution_based import Rocket
from sklearn.ensemble import GradientBoostingClassifier
# Extract features
rocket = Rocket()
X_train_features = rocket.fit_transform(X_train)
X_test_features = rocket.transform(X_test)
# Train traditional ML
clf = GradientBoostingClassifier()
clf.fit(X_train_features, y_train)
predictions = clf.predict(X_test_features)
使用可视化进行异常检测
import numpy as np
import matplotlib.pyplot as plt
from aeon.anomaly_detection.series.distance_based import STOMP
detector = STOMP(window_size=50)
scores = detector.fit_predict(y)
plt.figure(figsize=(15, 5))
plt.subplot(2, 1, 1)
plt.plot(y, label='Time Series')
plt.subplot(2, 1, 2)
plt.plot(scores, label='Anomaly Scores', color='red')
plt.axhline(np.percentile(scores, 95), color='k', linestyle='--')
plt.show()
最佳实践
数据准备
-
归一化:大多数算法都能从 Z 归一化中受益
from aeon.transformations.collection import Normalizer normalizer = Normalizer() X_train = normalizer.fit_transform(X_train) X_test = normalizer.transform(X_test) -
处理缺失值:分析前先进行插补
from aeon.transformations.collection import SimpleImputer imputer = SimpleImputer(strategy='mean') X_train = imputer.fit_transform(X_train) -
检查数据格式:Aeon 要求形状为
(n_samples, n_channels, n_timepoints)
模型选择
- 从简单方法入手:先尝试 ROCKET 变体,再使用深度学习
- 使用验证集:划分训练数据以调整超参数
- 比较基线:与简单方法(1-NN 欧几里得距离、朴素方法)进行比较
- 考虑资源:追求速度时使用 ROCKET;有 GPU 时可考虑深度学习
算法选择指南
快速原型开发:
- 分类:
MiniRocketClassifier - 回归:
MiniRocketRegressor - 聚类:使用欧几里得距离的
TimeSeriesKMeans
追求最高准确率:
- 分类:
HIVECOTEV2、InceptionTimeClassifier - 回归:
InceptionTimeRegressor - 预测:
ARIMA、TCNForecaster
追求可解释性:
- 分类:
ShapeletTransformClassifier、Catch22Classifier - 特征:
Catch22、TSFresh
小型数据集:
- 基于距离的方法:使用 DTW 的
KNeighborsTimeSeriesClassifier - 避免使用:深度学习(需要大量数据)
参考文档
references/ 中提供了详细信息:
classification.md- 所有分类算法regression.md- 回归方法clustering.md- 聚类算法forecasting.md- 预测方法anomaly_detection.md- 异常检测方法segmentation.md- 分段算法similarity_search.md- 模式匹配与模板发现transformations.md- 特征提取与预处理distances.md- 时间序列距离度量networks.md- 深度学习架构datasets_benchmarking.md- 数据加载与评估工具