Aeon Time Series Machine Learning
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.
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
uv pip install aeon
Core Capabilities
- Time Series Classification
Categorize time series into predefined classes. See references/classification.md for complete algorithm catalog.
Quick Start:
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)
Algorithm Selection:
-
Speed + Performance: MiniRocketClassifier , Arsenal
-
Maximum Accuracy: HIVECOTEV2 , InceptionTimeClassifier
-
Interpretability: ShapeletTransformClassifier , Catch22Classifier
-
Small Datasets: KNeighborsTimeSeriesClassifier with DTW distance
- Time Series Regression
Predict continuous values from time series. See references/regression.md for algorithms.
Quick Start:
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)
- Time Series Clustering
Group similar time series without labels. See references/clustering.md for methods.
Quick Start:
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_
- Forecasting
Predict future time series values. See references/forecasting.md for forecasters.
Quick Start:
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])
- Anomaly Detection
Identify unusual patterns or outliers. See references/anomaly_detection.md for detectors.
Quick Start:
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
- Segmentation
Partition time series into regions with change points. See references/segmentation.md .
Quick Start:
from aeon.segmentation import ClaSPSegmenter
segmenter = ClaSPSegmenter() change_points = segmenter.fit_predict(y)
- Similarity Search
Find similar patterns within or across time series. See references/similarity_search.md .
Quick Start:
from aeon.similarity_search import StompMotif
Find recurring patterns
motif_finder = StompMotif(window_size=50, k=3) motifs = motif_finder.fit_predict(y)
Feature Extraction and Transformations
Transform time series for feature engineering. See references/transformations.md .
ROCKET Features:
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)
Statistical Features:
from aeon.transformations.collection.feature_based import Catch22
catch22 = Catch22() X_features = catch22.fit_transform(X_train)
Preprocessing:
from aeon.transformations.collection import MinMaxScaler, Normalizer
scaler = Normalizer() # Z-normalization X_normalized = scaler.fit_transform(X_train)
Distance Metrics
Specialized temporal distance measures. See references/distances.md for complete catalog.
Usage:
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} )
Available Distances:
-
Elastic: DTW, DDTW, WDTW, ERP, EDR, LCSS, TWE, MSM
-
Lock-step: Euclidean, Manhattan, Minkowski
-
Shape-based: Shape DTW, SBD
Deep Learning Networks
Neural architectures for time series. See references/networks.md .
Architectures:
-
Convolutional: FCNClassifier , ResNetClassifier , InceptionTimeClassifier
-
Recurrent: RecurrentNetwork , TCNNetwork
-
Autoencoders: AEFCNClusterer , AEResNetClusterer
Usage:
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.md .
Load Datasets:
from aeon.datasets import load_classification, load_regression
Classification
X_train, y_train = load_classification("ArrowHead", split="train")
Regression
X_train, y_train = load_regression("Covid3Month", split="train")
Benchmarking:
from aeon.benchmarking import get_estimator_results
Compare with published results
published = get_estimator_results("ROCKET", "GunPoint")
Common Workflows
Classification Pipeline
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
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)
Anomaly Detection with Visualization
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()
Best Practices
Data Preparation
Normalize: Most algorithms benefit from z-normalization
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 analysis
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)
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
Algorithm Selection Guide
For Fast Prototyping:
-
Classification: MiniRocketClassifier
-
Regression: MiniRocketRegressor
-
Clustering: TimeSeriesKMeans with Euclidean
For Maximum Accuracy:
-
Classification: HIVECOTEV2 , InceptionTimeClassifier
-
Regression: InceptionTimeRegressor
-
Forecasting: ARIMA , TCNForecaster
For Interpretability:
-
Classification: ShapeletTransformClassifier , Catch22Classifier
-
Features: Catch22 , TSFresh
For Small Datasets:
-
Distance-based: KNeighborsTimeSeriesClassifier with DTW
-
Avoid: Deep learning (requires large data)
Reference Documentation
Detailed information available in references/ :
-
classification.md
-
All classification algorithms
-
regression.md
-
Regression methods
-
clustering.md
-
Clustering algorithms
-
forecasting.md
-
Forecasting approaches
-
anomaly_detection.md
-
Anomaly detection methods
-
segmentation.md
-
Segmentation algorithms
-
similarity_search.md
-
Pattern matching and motif discovery
-
transformations.md
-
Feature extraction and preprocessing
-
distances.md
-
Time series distance metrics
-
networks.md
-
Deep learning architectures
-
datasets_benchmarking.md
-
Data loading and evaluation tools
Additional Resources
-
Documentation: https://www.aeon-toolkit.org/
-
Examples: https://www.aeon-toolkit.org/en/stable/examples.html
-
API Reference: https://www.aeon-toolkit.org/en/stable/api_reference.html