mcpField
A
aeon

aeon

github.com/kalarislabs数据与数据库7344 次安装4 天前更新
代码仓库

关于 aeon

Aeon 是兼容 scikit-learn 的 Python 时间序列机器学习工具包,面向构建时序数据模型的研究者和实践者。它通过统一的估算器 API 涵盖预测、模式发现、特征转换、距离计算和基准评测。

主要功能

  1. 01时间序列分类与回归
  2. 02聚类与预测
  3. 03异常检测与分段
  4. 04相似性搜索与模式发现
  5. 05特征提取与预处理
  6. 06时序距离计算与基准评测

适用场景

  1. 01对带标签的时序进行分类
  2. 02预测时间序列的未来值
  3. 03发现异常或变化点
  4. 04为机器学习模型提取特征

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill aeon

安装后在 Claude Code 中输入/aeon确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
anomaly_detection.md
classification.md
clustering.md
datasets_benchmarking.md
distances.md
forecasting.md
networks.md
regression.md
segmentation.md
similarity_search.md
transformations.md

详细介绍

Aeon 时间序列机器学习

概述

Aeon 是一个兼容 scikit-learn 的 Python 时间序列机器学习工具包(aeon-toolkit.org)。它提供分类、回归、聚类、预测、异常检测、分段、相似性搜索、距离计算、转换、基准测试和可视化等算法,并采用一致的估算器 API。

**版本说明:**示例适用于 aeon 1.x(稳定版文档:v1.4.0,2026 年 3 月)。v1.0 版本重新设计了预测和转换功能;其导入路径与 aeon 0.x/sktime 时代的代码不同。

何时使用此技能

适用于以下情况:

  • 对时间序列数据进行分类或预测
  • 检测时间序列中的异常或变点
  • 聚类相似的时间序列模式
  • 预测未来值
  • 查找重复模式(motif)或异常子序列(discord)
  • 使用专用距离度量比较时间序列
  • 从时间数据中提取特征

安装

需要 Python 3.10+(推荐使用 3.11+)。为确保可复现性,请固定使用 1.x 版本:

uv pip install "aeon>=1.4,<2"

如需深度学习预测器/分类器及其他可选估算器:

uv pip install "aeon[all_extras]>=1.4,<2"

在 zsh 中,请为额外依赖加引号:uv pip install "aeon[all_extras]>=1.4,<2"。

实验性模块

上游将 forecasting、anomaly_detection、segmentation、similarity_search 和 visualisation 视为实验性模块,其接口可能会在次要版本之间发生变化。除非任务需要这些模块,否则生产流水线应优先使用稳定模块(分类、回归、聚类、距离计算和转换)。

核心功能

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. 预测

预测未来的时间序列值(aeon 1.x 中的实验性模块)。预测器请参阅 references/forecasting.md。

快速入门:

import numpy as np
from aeon.forecasting import NaiveForecaster
from aeon.forecasting.stats import ARIMA

y_train = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0])

# Set horizon in the constructor; predict passes the series to forecast from
naive = NaiveForecaster(strategy="last", horizon=5)
naive.fit(y_train)
y_pred = naive.predict(y_train)

# ARIMA uses p/d/q (not order=); multi-step via iterative_forecast
arima = ARIMA(p=1, d=1, q=1)
arima.fit(y_train)
y_pred = arima.iterative_forecast(y_train, prediction_horizon=5)
5. 异常检测

识别异常模式或离群值。检测器请参阅 references/anomaly_detection.md。

快速入门:

from aeon.anomaly_detection 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 import StompMotif

# Find recurring patterns
motif_finder = StompMotif(window_size=50, k=3)
motifs = motif_finder.fit_predict(y)

特征提取与转换

转换时间序列以进行特征工程。请参阅 references/transformations.md。

ROCKET 特征:

from aeon.transformations.collection.convolution_based import RocketTransformer

rocket = RocketTransformer()
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
  • 逐步距离:欧氏距离、曼哈顿距离、闵可夫斯基距离
  • 基于形状的距离:Shape DTW、SBD

深度学习网络

用于时间序列的神经网络架构。请参阅 references/networks.md。

架构:

  • 卷积: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_gunpoint, load_regression

# Classification (generic loader or dataset-specific helper)
X_train, y_train = load_classification("GunPoint", split="train")
X_train, y_train = load_gunpoint(split="train")  # same UCR dataset

# Regression
X_train, y_train = load_regression("Covid3Month", split="train")

基准测试:

from aeon.benchmarking import get_estimator_results

# Compare with published results
published = get_estimator_results("ROCKET", "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 import RocketTransformer
from sklearn.ensemble import GradientBoostingClassifier

# Extract features
rocket = RocketTransformer()
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)
带可视化的异常检测
from aeon.anomaly_detection import STOMP
import matplotlib.pyplot as plt

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()

最佳实践

数据准备
  1. 归一化:大多数算法都受益于 Z 标准化

    from aeon.transformations.collection import Normalizer
    normalizer = Normalizer()
    X_train = normalizer.fit_transform(X_train)
    X_test = normalizer.transform(X_test)
    
  2. 处理缺失值:分析前先进行插补

    from aeon.transformations.collection import SimpleImputer
    imputer = SimpleImputer(strategy='mean')
    X_train = imputer.fit_transform(X_train)
    
  3. 检查数据格式:数据集使用 (n_cases, n_channels, n_timepoints);单个序列使用 (n_channels, n_timepoints)(请参阅数据格式)

模型选择
  1. 从简单方法开始:先尝试 ROCKET 系列算法,再考虑深度学习
  2. 使用验证集:划分训练数据以调优超参数
  3. 比较基线:与简单方法(1-NN 欧氏距离、朴素方法)进行比较
  4. 考虑资源:追求速度时选择 ROCKET;有 GPU 时可选择深度学习
算法选择指南

快速原型开发:

  • 分类:MiniRocketClassifier
  • 回归:MiniRocketRegressor
  • 聚类:使用欧氏距离的 TimeSeriesKMeans

追求最高准确率:

  • 分类:HIVECOTEV2、InceptionTimeClassifier
  • 回归:InceptionTimeRegressor
  • 预测:AutoARIMA、AutoETS、TCNForecaster(深度学习需要 [all_extras])

注重可解释性:

  • 分类: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 - 数据加载与评估工具

其他资源

Agent 操作流程

  1. 检查环境。 确认 Python 环境和库版本(python -c "import pkg; print(pkg.__version__)"),并检查数据的形状、类型和缺失值。
  2. 明确输入。 根据数据或用户确认格式、标识符和参数。任何会改变结果的值都应询问,而不是猜测。
  3. 先运行小规模版本。 先用样本或单个折运行,并检查运行时间和内存。
  4. 按照上述说明和参考资料执行完整任务。
  5. 验证结果。 使用留出数据、固定随机种子和适当的指标;检查是否存在数据泄漏;报告不确定性(置信区间、不同随机种子的标准差)。
  6. 报告。 说明运行了什么(版本、命令、参数)、检查了什么,以及哪些内容仍不确定。
如果出现这种情况请这样做
内存不足或执行速度很慢使用子样本、分块或惰性计算,或者缩小模型规模,并告知用户做了哪些更改。
这些说明中提到的函数、标志或端点在已安装的版本中不存在查看已安装版本自身的文档(help()、--help、官方文档),进行适配,并告知用户。切勿编造 API。
必需的输入、标识符或参数存在歧义询问用户,或在运行前明确说明所采用的假设。

诚信规则

  • 切勿编造结果、参数、标识符、引文或统计数据。如果无法运行或验证某项内容,应明确说明。
  • 切勿报告本次会话中未计算的指标;展示生成每个数字的代码路径。
  • 将此处与特定版本相关的细节视为可能已过时:请对照已安装版本的官方文档进行确认。
  • 在执行会产生费用、占用共享 GPU 或云配额、涉及个人或患者数据,或无法撤销的操作前,先征得同意。

相关技能

  • timesfm-forecasting:使用 Google 的 TimesFM 基础模型进行零样本时间序列预测。
  • scikit-learn:介绍如何在 Python 中使用 scikit-learn(sklearn)进行经典机器学习,涵盖分类和回归估计器、聚类和维度……
  • crewai-multi-agent:用于自主 AI 协作的多 Agent 编排框架。

评论

支持 Markdown