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 的接口规范之上,补齐了时间序列专属的算法、距离度量和特征提取方式。
"一键安装"的思路与步骤:
- 确认安装前提:需要一个可用的 Python 环境,以及
uv包管理器(详情中给出的安装命令基于 uv;若你的环境使用 pip,也属于同一包的常规安装方式,具体以官方说明为准)。 - 执行安装命令:在终端中运行详情提供的命令:
uv pip install aeon
- 验证是否生效:安装完成后,在 Python 中导入并查看版本,能正常返回即说明安装成功:
import aeon
print(aeon.__version__)
如果能打印出版本号、且没有报 ModuleNotFoundError,就说明环境已经就绪。若出现导入失败,优先检查当前 Python 环境是否与你执行安装命令的环境是同一个(虚拟环境未激活是最常见的原因)。
- 在 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 与公开基线对齐效果,再决定是否替换线上方案。