技能使用指南

aeon(Aeon时间序列机器学习)Skill 是什么?如何下载安装?

Aeon时间序列机器学习Skill用一套scikit-learn风格API覆盖分类、回归、聚类、预测、异常检测、分割与相似性搜索七大任务,内置DTW等专业时序距离、ROCKET特征与深度学习网络。本文详解安装命令、分步使用指南、竞品对比与典型场景,助你快速上手时序建模。

Aeon时间序列机器学习Skillaeon
8 个章节 约 23 分钟阅读 AI 智能生成

Aeon时间序列机器学习Skill:用 scikit-learn 风格 API 一次性搞定七大类时序任务

  • 一个技能覆盖七类任务:分类、回归、聚类、预测、异常检测、分割、相似性搜索,全部收敛在同一套 API 之下,不用再为每种任务找不同库。
  • API 与 scikit-learn 完全对齐:fit / predict / fit_predict / score / transform 即学即用,已有的 Pipeline、交叉验证、网格搜索经验可以直接复用。
  • 算法库覆盖"够快"到"够准":从 MiniRocket、Arsenal 这类速度型方案,到 HIVECOTEV2、InceptionTime 这类精度型方案,再到 Shapelet、Catch22 这类可解释方案,按需切换即可。
  • 自带专业时序距离度量:DTW、DDTW、WDTW、ERP、EDR、LCSS、TWE、MSM、SBD 等弹性距离开箱可用,这是普通机器学习库最难补齐的一环。
  • 附送标准数据集与基准测试:一行代码加载 GunPoint、ArrowHead、Covid3Month 等公开数据集,还能与已发表结果横向对比,快速判断模型是否"真的变好了"。

该技能叫什么?如何下载安装 AI 技能提升开发效率?

这个技能的中文名叫 Aeon时间序列机器学习Skill,英文名与包名均为 aeon,技能 ID 为 11996。

它要解决的问题非常具体:普通机器学习库把每条样本当成一个"扁平向量",而时间序列的数据是有顺序、有节奏、有形状的。 当你把传感器读数、心电图、股价、点击流直接丢进随机森林或逻辑回归时,时间维度上的形态信息——上升沿、周期、突变点、重复片段——几乎全部丢失。Aeon 就是为这个缺口而生的:它在 scikit-learn 的接口规范之上,补齐了时间序列专属的算法、距离度量和特征提取方式。

"一键安装"的思路与步骤:

  1. 确认安装前提:需要一个可用的 Python 环境,以及 uv 包管理器(详情中给出的安装命令基于 uv;若你的环境使用 pip,也属于同一包的常规安装方式,具体以官方说明为准)。
  2. 执行安装命令:在终端中运行详情提供的命令:
uv pip install aeon
  1. 验证是否生效:安装完成后,在 Python 中导入并查看版本,能正常返回即说明安装成功:
import aeon
print(aeon.__version__)

如果能打印出版本号、且没有报 ModuleNotFoundError,就说明环境已经就绪。若出现导入失败,优先检查当前 Python 环境是否与你执行安装命令的环境是同一个(虚拟环境未激活是最常见的原因)。

  1. 在 AI 技能中被调用:作为技能使用时,你只需要用自然语言说明任务(例如"对这批多变量传感器数据做异常检测并给出阈值"),技能便会按内置的 references/ 文档索引到对应算法,生成可运行的代码。具体调用入口与配置方式以官方说明为准。

安装完成后,官方还提供了完整的学习资源:文档站点 https://www.aeon-toolkit.org/、GitHub 仓库 https://github.com/aeon-toolkit/aeon、示例页与 API 参考页,均可按需查阅。

该技能的主要功能和特点

  • 时间序列分类:把一段序列判归到预定义类别,例如心电片段判"正常/异常"、动作传感器判"走路/跑步/静止"。提供 RocketClassifier、MiniRocketClassifier、Arsenal、HIVECOTEV2、InceptionTimeClassifier、ShapeletTransformClassifier、Catch22Classifier、KNeighborsTimeSeriesClassifier 等多种选择。
  • 时间序列回归:从整段序列预测一个连续值,如设备健康度评分、作物产量估计,RocketRegressor、InceptionTimeRegressor 等可直接调用。
  • 时间序列聚类:无标签分组,TimeSeriesKMeans 支持 distance="dtw" 与 averaging_method="ba"(重心平均),能对"形状相似"的序列聚类,而不只是数值接近。
  • 预测(Forecasting):按预测步长 fh 输出未来若干点,ARIMA(order=(1,1,1)) 等经典与深度预测器齐备,TCNForecaster 用于更强表达力的场景。
  • 异常检测:STOMP(window_size=50) 输出逐点异常分数,用分位数(如 95%)切阈值即可定位异常区间,适合做无标签的"找不对劲"。
  • 分割(Segmentation):ClaSPSegmenter 找出变化点,把长序列切成若干行为阶段,适合用户行为流、工况切换分析。
  • 相似性搜索与 motif 发现:StompMotif(window_size=50, k=3) 找出重复出现的模式(motif),也可用于寻找不寻常子序列(discord)。
  • 特征提取与转换:RocketTransformer 生成随机卷积特征后可直接喂给任意 sklearn 分类器;Catch22 输出 22 个可解释的统计特征;Normalizer、MinMaxScaler、SimpleImputer 负责预处理。
  • 专业距离度量:弹性距离(DTW、DDTW、WDTW、ERP、EDR、LCSS、TWE、MSM)、锁步距离(欧几里得、曼哈顿、闵可夫斯基)、基于形状的距离(Shape DTW、SBD),既可直接计算,也可作为分类器的 distance 参数。
  • 深度学习网络:卷积类(FCNClassifier、ResNetClassifier、InceptionTimeClassifier)、循环类(RecurrentNetwork、TCNNetwork)、自编码器类(AEFCNClusterer、AEResNetClusterer)。
  • 数据集与基准测试:load_classification、load_regression 一行加载标准数据集;get_estimator_results 拉取已发表结果做横向对照。

和普通工具比强在哪? 普通工具给你的是"通用模型 + 你自己想办法把时序变成向量";Aeon 给你的是"时序原生算法 + 时序原生距离 + 时序原生特征",并且统一要求数据形状为 (n_samples, n_channels, n_timepoints),多变量序列天然支持,不需要手工展平。

如何使用该技能?

下面按"从零到跑通"的顺序给出一条可复现路径。

第 1 步:准备数据格式。 Aeon 期望的三维形状是 (样本数, 通道数, 时间点数)。单变量序列也不要省略通道维。如果数据是二维的 (n_samples, n_timepoints),多数加载器与转换器能自动兼容,但显式检查一遍更稳妥。

第 2 步:加载或导入数据。 用内置数据集快速验证环境:

from aeon.datasets import load_classification

X_train, y_train = load_classification("GunPoint", split="train")
X_test, y_test = load_classification("GunPoint", split="test")

输出说明:X_train 为三维数组,y_train 为类别标签数组。

第 3 步:预处理。 大多数算法都受益于 Z-归一化:

from aeon.transformations.collection import Normalizer

normalizer = Normalizer()
X_train = normalizer.fit_transform(X_train)
X_test = normalizer.transform(X_test)  # 注意测试集只 transform,不 fit

缺失值先行填充:

from aeon.transformations.collection import SimpleImputer

imputer = SimpleImputer(strategy='mean')
X_train = imputer.fit_transform(X_train)

第 4 步:选择算法并训练。 先跑速度型基线,确认流程通了再追精度:

from aeon.classification.convolution_based import RocketClassifier

clf = RocketClassifier(n_kernels=10000)
clf.fit(X_train, y_train)
accuracy = clf.score(X_test, y_test)
print(accuracy)

输出说明:score 返回测试集准确率(浮点数);predict 返回预测标签数组。

第 5 步:组装管道。 把预处理和分类器串成一个 Pipeline,避免数据泄漏,也方便整体调参:

from sklearn.pipeline import Pipeline
from aeon.transformations.collection import Normalizer
from aeon.classification.convolution_based import RocketClassifier

pipeline = Pipeline([
    ('normalize', Normalizer()),
    ('classify', RocketClassifier())
])
pipeline.fit(X_train, y_train)
print(pipeline.score(X_test, y_test))

第 6 步:换个任务类型,接口不变。 异常检测:

import numpy as np
from aeon.anomaly_detection import STOMP

detector = STOMP(window_size=50)
anomaly_scores = detector.fit_predict(y)   # 输入单条长序列
threshold = np.percentile(anomaly_scores, 95)
anomalies = anomaly_scores > threshold     # 布尔数组,True 为异常点

输出说明:fit_predict 返回与输入等长的异常分数序列,数值越高越异常。

预测:

from aeon.forecasting.arima import ARIMA

forecaster = ARIMA(order=(1, 1, 1))
forecaster.fit(y_train)
y_pred = forecaster.predict(fh=[1, 2, 3, 4, 5])  # 预测未来 5 步

聚类:

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_

第 7 步:把时序特征喂给传统机器学习。 这条路在实战中性价比极高——用 Aeon 提取特征,用你熟悉得不能再熟悉的 sklearn 模型收尾:

from aeon.transformations.collection.convolution_based import RocketTransformer
from sklearn.ensemble import GradientBoostingClassifier

rocket = RocketTransformer()
X_train_features = rocket.fit_transform(X_train)
X_test_features = rocket.transform(X_test)

clf = GradientBoostingClassifier()
clf.fit(X_train_features, y_train)
predictions = clf.predict(X_test_features)

第 8 步:算法选择速查。 快速原型用 MiniRocketClassifier / MiniRocketRegressor / TimeSeriesKMeans+欧几里得;追求最高精度用 HIVECOTEV2、InceptionTimeClassifier;需要可解释性用 ShapeletTransformClassifier、Catch22Classifier;小数据集用 KNeighborsTimeSeriesClassifier 配 DTW,并避开深度学习。

同类型竞品对比分析

方案名称 定位 核心功能 安装/使用门槛 适用场景 优势与不足
aeon(本技能) 面向时间序列机器学习的统一工具包,兼容 scikit-learn 分类、回归、聚类、预测、异常检测、分割、相似性搜索、距离度量、深度学习网络、基准测试 uv pip install aeon 一条命令;需理解三维数据形状约定 需要在一套 API 下横跨多种时序任务的研究与工程 优势:任务覆盖面最广,时序距离与特征提取最完整,基准测试体系成熟;不足:算法选项多,初学者需要花时间做选型
sktime 统一的时序学习框架,同样对齐 scikit-learn 分类、回归、预测、变换,强调多步预测与模型组合 常规包管理器安装;预测相关概念(如时间索引、预测范围)学习曲线略陡 以预测为主、需要复杂模型编排与流水线组合的项目 优势:预测与模型组合能力强,生态整合度高;不足:异常检测、相似性搜索、分割等任务覆盖不如 aeon 全面
tslearn 轻量级时序机器学习库,主打距离与核方法 DTW 等距离、KNN/ SVM 时序版本、时序聚类(KShape、KMeans 变体) 安装简单,API 风格接近 sklearn 教学、论文复现、以 DTW 为核心的分类与聚类 优势:上手快、距离实现清晰;不足:算法广度有限,缺少成熟的深度学习架构与基准测试体系
darts 面向预测与异常检测的高层封装库 大量预测模型统一接口、概率预测、回测、异常检测 安装简单,API 更"高层",隐藏了细节 业务侧的销量、流量、能耗预测快速落地 优势:预测开箱即用、可解释性好、回测方便;不足:分类、聚类、分割、motif 搜索等任务基本不覆盖
PyOD 专注异常检测的库 数十种异常检测算法(含时序适配版本) 安装简单,专注单一任务 纯异常检测、离群点识别 优势:异常检测算法最丰富;不足:不提供分类、预测、聚类等能力,时序特性支持有限

一句话选型建议:任务跨度大、并且需要专业时序距离与特征,选 aeon;只做预测,看 darts 或 sktime;只做异常检测,PyOD 更专;只玩 DTW 与聚类,tslearn 足够。

该技能的典型应用场景与实际体验情况

场景一:工业设备预测性维护(角色:设备工程师 / 算法工程师) 痛点是传感器数据量大、故障样本极少、标注成本高。使用方式是:先用 STOMP(window_size=50) 对单台设备的长序列做无监督异常打分,用 95 分位切阈值圈出可疑时段;再把历史片段用 RocketClassifier 训练成"正常/异常工况"分类器,对新数据实时判别。 实际体验:上手难度中等,异常检测路径几乎不需要标注就能出第一版结果,非常适合在缺乏标签时先"看见问题"。注意事项是 window_size 对结果影响明显,建议在设备的一个完整工作周期尺度上取值并做对比试验。

场景二:可穿戴设备动作识别(角色:移动端 / 嵌入式算法工程师) 痛点是从三轴加速度数据识别步行、跑步、上下楼等动作,传统特征工程耗时且难以覆盖多通道耦合。使用方式是:用 MiniRocketClassifier 做快速基线,通过后若精度不够,再换 HIVECOTEV2 或 InceptionTimeClassifier 追精度;对算力敏感的场景则用 RocketTransformer 抽特征 + 轻量 sklearn 模型。 实际体验:这是 Aeon 最"顺滑"的路径,卷积类方法在时序分类基准上表现稳定,代码量极少。注意事项是深度学习方案需要较多数据与 GPU,样本量小时应优先用距离方法而非硬上神经网络。

场景三:业务指标波动归因(角色:数据分析师 / 增长运营) 痛点是日活、订单量等指标序列存在阶段性变化,人工难以界定"从哪天开始变了"。使用方式是:ClaSPSegmenter 找出变化点,按阶段切分后分别统计;再对同一指标的多地区序列用 TimeSeriesKMeans(distance="dtw") 聚类,把"走势相似"的城市归为一组做统一策略。 实际体验:分割结果直观、可解释性强,非常适合放进汇报材料。注意事项是变化点算法对噪声敏感,建议先做归一化与平滑,并结合业务日历排除大促等已知事件。

场景四:周期规律与重复模式挖掘(角色:风控 / 运维工程师) 痛点是希望在一长串访问日志或监控指标里找到"反复出现的可疑模式"。使用方式是:StompMotif(window_size=50, k=3) 输出前 3 个 motif,观察其出现位置与频率;反之也可寻找 discord 定位罕见片段。 实际体验:这是大多数通用库完全没有的能力,属于 Aeon 的"独门武器"。注意事项是窗口大小直接决定发现的模式粒度,建议按业务周期(如一天 288 个五分钟点)成比例设置。

该技能能为用户带来的价值

  • 效率提升:把"搭轮子"的时间换成"做实验"的时间。 过去做时序异常检测,往往要自己实现滑窗距离矩阵、自己写阈值逻辑;现在一行 STOMP(window_size=50) 加一行分位数切分就得到第一版可用结果,从想法到可运行代码的周期从数天压缩到分钟级。
  • 门槛降低:不用成为时序算法专家也能用对方法。 技能内置了算法选择指南——速度优先用 MiniRocket,精度优先用 HIVECOTEV2 / InceptionTime,可解释优先用 Shapelet / Catch22,小数据优先用 DTW-KNN。选型这件事从"靠猜"变成"照方抓药"。
  • 知识复用:scikit-learn 经验零损耗。 fit/predict/transform/score 的标准接口,意味着你已有的 Pipeline、交叉验证、网格搜索、模型持久化经验全部可以直接迁移,学习成本几乎只剩"理解数据形状"这一条。
  • 质量兜底:有基准可对照,不做自欺欺人的优化。 get_estimator_results 能拉到已发表结果,load_classification 能加载标准数据集,你的模型是好是坏不再是"感觉上变好了",而是有公开基线可对比。
  • 长期价值:一套接口覆盖七类任务。 从分类到预测、从异常检测到 motif 搜索,团队不必为每种任务引入一个新库,依赖更少、维护成本更低、代码风格更统一。

常见问题 FAQ

Q1:这个技能怎么安装?需要什么前提? A:在具备 Python 环境与 uv 包管理器的前提下,执行详情给出的命令 uv pip install aeon 即可。安装后用 import aeon 打印版本号验证是否生效。若你的团队使用其他包管理方式,属于同一 Python 包的常规安装流程,具体以官方说明为准。

Q2:它是收费的吗? A:技能详情中未提及任何收费信息,Aeon 本身是开源的 Python 工具包,官方文档与 GitHub 仓库均公开可访问。是否有商业版或增值服务,以官方说明为准。

Q3:我完全不懂时间序列算法,适合用吗? A:适合,但建议按"先跑通、再优化"的顺序。第一步用 load_classification 加载 GunPoint 数据集,配 RocketClassifier 跑通完整流程;第二步套用详情中的算法选择指南换模型。真正的门槛不在写代码,而在理解"数据是 (样本数, 通道数, 时间点数) 三维形状"这件事。

Q4:和 sktime、darts、tslearn 相比该怎么选? A:看任务跨度。如果你的项目要同时涉及分类、聚类、异常检测、分割、相似性搜索,选 aeon 最省心;如果核心诉求就是"把未来几周的销量预测准",darts 或 sktime 更聚焦;如果只想用 DTW 做点分类和聚类实验,tslearn 更轻。也可以组合使用:用 aeon 做特征与异常检测,用别家做高层预测封装。

Q5:为什么我的模型效果不理想? A:先排查三件事:数据形状对不对(应为三维,单变量也别省通道维);有没有做归一化(Normalizer 是多数算法的收益前提);训练/测试的预处理是否一致(测试集只能 transform,不能重新 fit,否则造成数据泄漏)。此外,样本量很小时不要直接上深度学习,先换 DTW + KNN 试试。

Q6:可以在生产环境直接用吗? A:技术上可行,Aeon 提供的是标准 Python 类,可被服务化封装。但仍需注意:RocketTransformer 的特征维度较高、InceptionTime 类模型推理成本不低,上线前应评估延迟与内存;同时建议先用 get_estimator_results 与公开基线对齐效果,再决定是否替换线上方案。