aeon
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAeon Time Series Machine Learning
Aeon时间序列机器学习
Overview
概述
Aeon is a scikit-learn compatible Python toolkit for time series machine learning. It provides state-of-the-art algorithms for classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search.
Aeon是一个兼容scikit-learn的Python时间序列机器学习工具包,提供用于分类、回归、聚类、预测、异常检测、分割和相似性搜索的最先进算法。
When to Use This Skill
何时使用该技能
Apply this skill when:
- Classifying or predicting from time series data
- Detecting anomalies or change points in temporal sequences
- Clustering similar time series patterns
- Forecasting future values
- Finding repeated patterns (motifs) or unusual subsequences (discords)
- Comparing time series with specialized distance metrics
- Extracting features from temporal data
在以下场景中应用该技能:
- 对时间序列数据进行分类或预测
- 检测时序序列中的异常点或变化点
- 聚类相似的时间序列模式
- 预测未来值
- 查找重复模式(基元)或异常子序列(异常片段)
- 使用专用距离指标比较时间序列
- 从时序数据中提取特征
Installation
安装
bash
uv pip install aeonbash
uv pip install aeonCore Capabilities
核心功能
1. Time Series Classification
1. 时间序列分类
Categorize time series into predefined classes. See for complete algorithm catalog.
references/classification.mdQuick Start:
python
from aeon.classification.convolution_based import RocketClassifier
from aeon.datasets import load_classification将时间序列分类为预定义类别。完整算法目录请参考。
references/classification.md快速入门:
python
from aeon.classification.convolution_based import RocketClassifier
from aeon.datasets import load_classificationLoad data
加载数据
X_train, y_train = load_classification("GunPoint", split="train")
X_test, y_test = load_classification("GunPoint", split="test")
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)
**Algorithm Selection:**
- **Speed + Performance**: `MiniRocketClassifier`, `Arsenal`
- **Maximum Accuracy**: `HIVECOTEV2`, `InceptionTimeClassifier`
- **Interpretability**: `ShapeletTransformClassifier`, `Catch22Classifier`
- **Small Datasets**: `KNeighborsTimeSeriesClassifier` with DTW distanceclf = 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. Time Series Regression
2. 时间序列回归
Predict continuous values from time series. See for algorithms.
references/regression.mdQuick Start:
python
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)从时间序列中预测连续值。算法详情请参考。
references/regression.md快速入门:
python
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. Time Series Clustering
3. 时间序列聚类
Group similar time series without labels. See for methods.
references/clustering.mdQuick Start:
python
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_在无标签的情况下对相似时间序列进行分组。方法详情请参考。
references/clustering.md快速入门:
python
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. Forecasting
4. 时间序列预测
Predict future time series values. See for forecasters.
references/forecasting.mdQuick Start:
python
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])预测时间序列的未来值。预测器详情请参考。
references/forecasting.md快速入门:
python
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. Anomaly Detection
5. 异常检测
Identify unusual patterns or outliers. See for detectors.
references/anomaly_detection.mdQuick Start:
python
from aeon.anomaly_detection import STOMP
detector = STOMP(window_size=50)
anomaly_scores = detector.fit_predict(y)识别异常模式或离群值。检测器详情请参考。
references/anomaly_detection.md快速入门:
python
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
undefinedthreshold = np.percentile(anomaly_scores, 95)
anomalies = anomaly_scores > threshold
undefined6. Segmentation
6. 时间序列分割
Partition time series into regions with change points. See .
references/segmentation.mdQuick Start:
python
from aeon.segmentation import ClaSPSegmenter
segmenter = ClaSPSegmenter()
change_points = segmenter.fit_predict(y)将时间序列划分为包含变化点的区域。详情请参考。
references/segmentation.md快速入门:
python
from aeon.segmentation import ClaSPSegmenter
segmenter = ClaSPSegmenter()
change_points = segmenter.fit_predict(y)7. Similarity Search
7. 相似性搜索
Find similar patterns within or across time series. See .
references/similarity_search.mdQuick Start:
python
from aeon.similarity_search import StompMotif在单个或多个时间序列中查找相似模式。详情请参考。
references/similarity_search.md快速入门:
python
from aeon.similarity_search import StompMotifFind recurring patterns
查找重复模式
motif_finder = StompMotif(window_size=50, k=3)
motifs = motif_finder.fit_predict(y)
undefinedmotif_finder = StompMotif(window_size=50, k=3)
motifs = motif_finder.fit_predict(y)
undefinedFeature Extraction and Transformations
特征提取与转换
Transform time series for feature engineering. See .
references/transformations.mdROCKET Features:
python
from aeon.transformations.collection.convolution_based import RocketTransformer
rocket = RocketTransformer()
X_features = rocket.fit_transform(X_train)转换时间序列以进行特征工程。详情请参考。
references/transformations.mdROCKET特征:
python
from aeon.transformations.collection.convolution_based import RocketTransformer
rocket = RocketTransformer()
X_features = rocket.fit_transform(X_train)Use features with any sklearn classifier
将特征与任意sklearn分类器配合使用
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(X_features, y_train)
**Statistical Features:**
```python
from aeon.transformations.collection.feature_based import Catch22
catch22 = Catch22()
X_features = catch22.fit_transform(X_train)Preprocessing:
python
from aeon.transformations.collection import MinMaxScaler, Normalizer
scaler = Normalizer() # Z-normalization
X_normalized = scaler.fit_transform(X_train)from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(X_features, y_train)
**统计特征:**
```python
from aeon.transformations.collection.feature_based import Catch22
catch22 = Catch22()
X_features = catch22.fit_transform(X_train)预处理:
python
from aeon.transformations.collection import MinMaxScaler, Normalizer
scaler = Normalizer() # Z标准化
X_normalized = scaler.fit_transform(X_train)Distance Metrics
距离指标
Specialized temporal distance measures. See for complete catalog.
references/distances.mdUsage:
python
from aeon.distances import dtw_distance, dtw_pairwise_distance专用的时序距离度量。完整目录请参考。
references/distances.md使用方法:
python
from aeon.distances import dtw_distance, dtw_pairwise_distanceSingle distance
单个距离计算
distance = dtw_distance(x, y, window=0.1)
distance = dtw_distance(x, y, window=0.1)
Pairwise distances
成对距离计算
distance_matrix = dtw_pairwise_distance(X_train)
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}
)
**Available Distances:**
- **Elastic**: DTW, DDTW, WDTW, ERP, EDR, LCSS, TWE, MSM
- **Lock-step**: Euclidean, Manhattan, Minkowski
- **Shape-based**: Shape DTW, SBDfrom 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、SBDDeep Learning Networks
深度学习网络
Neural architectures for time series. See .
references/networks.mdArchitectures:
- Convolutional: ,
FCNClassifier,ResNetClassifierInceptionTimeClassifier - Recurrent: ,
RecurrentNetworkTCNNetwork - Autoencoders: ,
AEFCNClustererAEResNetClusterer
Usage:
python
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/networks.md架构类型:
- 卷积类:、
FCNClassifier、ResNetClassifierInceptionTimeClassifier - 循环类:、
RecurrentNetworkTCNNetwork - 自编码器类:、
AEFCNClustererAEResNetClusterer
使用方法:
python
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)Datasets and Benchmarking
数据集与基准测试
Load standard benchmarks and evaluate performance. See .
references/datasets_benchmarking.mdLoad Datasets:
python
from aeon.datasets import load_classification, load_regression加载标准基准数据集并评估性能。详情请参考。
references/datasets_benchmarking.md加载数据集:
python
from aeon.datasets import load_classification, load_regressionClassification
分类数据集
X_train, y_train = load_classification("ArrowHead", split="train")
X_train, y_train = load_classification("ArrowHead", split="train")
Regression
回归数据集
X_train, y_train = load_regression("Covid3Month", split="train")
**Benchmarking:**
```python
from aeon.benchmarking import get_estimator_resultsX_train, y_train = load_regression("Covid3Month", split="train")
**基准测试:**
```python
from aeon.benchmarking import get_estimator_resultsCompare with published results
与已发布结果对比
published = get_estimator_results("ROCKET", "GunPoint")
undefinedpublished = get_estimator_results("ROCKET", "GunPoint")
undefinedCommon Workflows
常见工作流
Classification Pipeline
分类流水线
python
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)python
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)Feature Extraction + Traditional ML
特征提取 + 传统机器学习
python
from aeon.transformations.collection import RocketTransformer
from sklearn.ensemble import GradientBoostingClassifierpython
from aeon.transformations.collection import RocketTransformer
from sklearn.ensemble import GradientBoostingClassifierExtract features
提取特征
rocket = RocketTransformer()
X_train_features = rocket.fit_transform(X_train)
X_test_features = rocket.transform(X_test)
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)
undefinedclf = GradientBoostingClassifier()
clf.fit(X_train_features, y_train)
predictions = clf.predict(X_test_features)
undefinedAnomaly Detection with Visualization
异常检测与可视化
python
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()python
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='时间序列')
plt.subplot(2, 1, 2)
plt.plot(scores, label='异常分数', color='red')
plt.axhline(np.percentile(scores, 95), color='k', linestyle='--')
plt.show()Best Practices
最佳实践
Data Preparation
数据准备
-
Normalize: Most algorithms benefit from z-normalizationpython
from aeon.transformations.collection import Normalizer normalizer = Normalizer() X_train = normalizer.fit_transform(X_train) X_test = normalizer.transform(X_test) -
Handle Missing Values: Impute before analysispython
from aeon.transformations.collection import SimpleImputer imputer = SimpleImputer(strategy='mean') X_train = imputer.fit_transform(X_train) -
Check Data Format: Aeon expects shape
(n_samples, n_channels, n_timepoints)
-
标准化:大多数算法受益于Z标准化python
from aeon.transformations.collection import Normalizer normalizer = Normalizer() X_train = normalizer.fit_transform(X_train) X_test = normalizer.transform(X_test) -
处理缺失值:分析前进行插补python
from aeon.transformations.collection import SimpleImputer imputer = SimpleImputer(strategy='mean') X_train = imputer.fit_transform(X_train) -
检查数据格式:Aeon要求数据形状为
(n_samples, n_channels, n_timepoints)
Model Selection
模型选择
- Start Simple: Begin with ROCKET variants before deep learning
- Use Validation: Split training data for hyperparameter tuning
- Compare Baselines: Test against simple methods (1-NN Euclidean, Naive)
- Consider Resources: ROCKET for speed, deep learning if GPU available
- 从简单开始:在尝试深度学习之前,先从ROCKET变体开始
- 使用验证集:拆分训练数据进行超参数调优
- 对比基线模型:与简单方法(1-NN欧氏距离、朴素模型)进行测试
- 考虑资源情况:追求速度选ROCKET,若有GPU可用再考虑深度学习
Algorithm Selection Guide
算法选择指南
For Fast Prototyping:
- Classification:
MiniRocketClassifier - Regression:
MiniRocketRegressor - Clustering: with Euclidean
TimeSeriesKMeans
For Maximum Accuracy:
- Classification: ,
HIVECOTEV2InceptionTimeClassifier - Regression:
InceptionTimeRegressor - Forecasting: ,
ARIMATCNForecaster
For Interpretability:
- Classification: ,
ShapeletTransformClassifierCatch22Classifier - Features: ,
Catch22TSFresh
For Small Datasets:
- Distance-based: with DTW
KNeighborsTimeSeriesClassifier - Avoid: Deep learning (requires large data)
快速原型开发:
- 分类:
MiniRocketClassifier - 回归:
MiniRocketRegressor - 聚类:搭配欧氏距离的
TimeSeriesKMeans
最高准确率:
- 分类:、
HIVECOTEV2InceptionTimeClassifier - 回归:
InceptionTimeRegressor - 预测:、
ARIMATCNForecaster
可解释性优先:
- 分类:、
ShapeletTransformClassifierCatch22Classifier - 特征:、
Catch22TSFresh
小数据集场景:
- 基于距离的模型:搭配DTW距离的
KNeighborsTimeSeriesClassifier - 避免使用:深度学习(需要大量数据)
Reference Documentation
参考文档
Detailed information available in :
references/- - All classification algorithms
classification.md - - Regression methods
regression.md - - Clustering algorithms
clustering.md - - Forecasting approaches
forecasting.md - - Anomaly detection methods
anomaly_detection.md - - Segmentation algorithms
segmentation.md - - Pattern matching and motif discovery
similarity_search.md - - Feature extraction and preprocessing
transformations.md - - Time series distance metrics
distances.md - - Deep learning architectures
networks.md - - Data loading and evaluation tools
datasets_benchmarking.md
详细信息请查看目录:
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
Additional Resources
额外资源
- Documentation: https://www.aeon-toolkit.org/
- GitHub: https://github.com/aeon-toolkit/aeon
- Examples: https://www.aeon-toolkit.org/en/stable/examples.html
- API Reference: https://www.aeon-toolkit.org/en/stable/api_reference.html