时间序列数据广泛存在于金融、医疗、能源、物联网等诸多领域,其分析与建模已成为机器学习的关键分支。Aeon 是一个专注于时间序列机器学习的开源 Python 工具库,覆盖从数据预处理到高级建模的完整流程,致力于为研究者与开发者提供高效统一的工作框架。
Aeon 脱胎于 sktime,由八位核心开发者于 2022 年共同创建。其最新版本 v1.1.0(截至 2025 年)进一步引入了先进算法与性能优化,迅速成长为时间序列分析领域的重要工具。
本文将全面介绍 Aeon 的功能特性、安装与配置、核心模块、典型应用场景、性能与局限分析,以及未来发展方向,旨在帮助读者系统掌握 Aeon 的使用方法与最佳实践。文章结构如下:
Aeon 是一个专为时间序列机器学习任务设计的 Python 工具包,涵盖分类、回归、聚类、预测与异常检测等核心任务。其目标是在统一 API 接口下提供先进算法的高效实现,并与 scikit-learn、sktime 等主流库保持良好兼容性。通过 Numba 的加速机制,Aeon 可在保证灵活性的同时提升计算效率。
时间序列数据具有时间依赖性、非平稳性以及可能的多变量结构,传统的机器学习库(如 scikit-learn)在处理此类问题时显得力不从心。Aeon 提供了如下关键优势:
Aeon 可广泛应用于:
Aeon 运行依赖以下 Python 包:
部分模型(如深度学习方法)可能还需 TensorFlow 或 PyTorch。
基础安装:
pip install aeon
安装所有可选依赖:
pip install aeon[all_extras]
从 GitHub 获取最新开发版本:
git clone https://github.com/aeon-toolkit/aeon.git
cd aeon
pip install .
安装验证:
import aeon
print(aeon.__version__) # 应显示 v1.1.0 或更高
使用虚拟环境可避免依赖冲突:
python -m venv aeon_env
source aeon_env/bin/activate # Linux/Mac
aeon_env\Scripts\activate # Windows
pip install aeon
如需深度学习支持,请预先安装相应的 CUDA 与 GPU 驱动。
Aeon 采用模块化架构,支持多种时间序列任务。以下分别介绍其核心模块与使用方式。
以 DTW(动态时间规整)为例:
from aeon.datasets import load_arrow_head
from aeon.classification.distance_based import TimeSeriesKNeighbors
from sklearn.metrics import accuracy_score
X_train, y_train = load_arrow_head(split="train", return_X_y=True)
X_test, y_test = load_arrow_head(split="test", return_X_y=True)
clf = TimeSeriesKNeighbors(distance="dtw", n_neighbors=5)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print(f"分类准确率: {accuracy_score(y_test, y_pred):.4f}")
使用 DTW 距离的 K-Means:
from aeon.clustering import TimeSeriesKMeans
import numpy as np
X = np.array([
[[1, 2, 3, 4, 5, 5]],
[[1, 2, 3, 4, 4, 2]],
[[8, 7, 6, 5, 4, 4]]
])
clu = TimeSeriesKMeans(distance="dtw", n_clusters=2)
clu.fit(X)
print("聚类标签:", clu.labels_)
使用 NaiveForecaster:
from aeon.forecasting.naive import NaiveForecaster
from aeon.datasets import load_airline
from aeon.utils.plotting import plot_series
y = load_airline()
forecaster = NaiveForecaster(strategy="last")
forecaster.fit(y)
y_pred = forecaster.predict(fh=list(range(1, 13)))
plot_series(y, y_pred, labels=["实际", "预测"])
使用 Isolation Forest:
from aeon.anomaly_detection import IsolationForestAD
from aeon.datasets import load_italy_power
X, _ = load_italy_power(return_X_y=True)
ad = IsolationForestAD()
ad.fit(X)
print("异常点索引:", np.where(ad.predict(X) == 1)[0])
线性去趋势:
from aeon.transformations.series import Detrend
X = np.array([[1, 2, 3, 4, 5, 6]])
transformer = Detrend()
print("去趋势后的数据:", transformer.fit_transform(X))
from aeon.datasets import load_basic_motions
from aeon.classification.interval_based import TimeSeriesForestClassifier
from sklearn.metrics import classification_report
X_train, y_train = load_basic_motions(split="train", return_X_y=True)
X_test, y_test = load_basic_motions(split="test", return_X_y=True)
clf = TimeSeriesForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)
print(classification_report(y_test, clf.predict(X_test)))
from aeon.forecasting.arima import ARIMA
from aeon.datasets import load_shampoo_sales
from aeon.utils.plotting import plot_series
y = load_shampoo_sales()
forecaster = ARIMA(order=(1, 1, 0))
forecaster.fit(y)
y_pred = forecaster.predict(fh=list(range(1, 13)))
plot_series(y, y_pred, labels=["实际", "预测"])
在中等规模数据集(<1 万条序列)上性能优异,但处理超大规模数据时,可能需要结合 Dask 等并行计算框架。
Aeon 未来的发展可能聚焦于:
Aeon 是一个现代化、高效且灵活的时间序列机器学习工具包。凭借其统一接口、强大算法支持与良好扩展性,Aeon 成为学术研究与工业应用的理想选择。希望通过本文介绍,读者能够快速掌握 Aeon 的使用方法,并在自己的项目中灵活运用。