⌛ Welcome to aeon
aeon
is an open-source toolkit for learning from time series. It is compatible with
scikit-learn and provides access to the very latest
algorithms for time series machine learning, in addition to a range of classical
techniques for learning tasks such as forecasting and classification.
We strive to provide a broad library of time series algorithms including the
latest advances, offer efficient implementations using numba, and interfaces with other
time series packages to provide a single framework for algorithm comparison.
The latest aeon
release is v1.0.0
. You can view the full changelog
here.
Our webpage and documentation is available at https://aeon-toolkit.org.
The following modules are still considered experimental, and the deprecation policy
does not apply:
anomaly_detection
forecasting
segmentation
similarity_search
visualisation
Overview | |
---|
CI/CD | |
Code | |
Community | |
Affiliation | |
⚙️ Installation
aeon
requires a Python version of 3.9 or greater. Our full installation guide is
available in our documentation.
The easiest way to install aeon
is via pip:
pip install aeon
Some estimators require additional packages to be installed. If you want to install
the full package with all optional dependencies, you can use:
pip install aeon[all_extras]
Instructions for installation from the GitHub source
can be found here.
⏲️ Getting started
The best place to get started for all aeon
packages is our getting started guide.
Below we provide a quick example of how to use aeon
for classification and clustering.
Classification/Regression
Time series classification looks to predict class labels fore unseen series using a
model fitted from a collection of time series. The framework for regression is similar,
replace the classifier with a regressor and the labels with continuous values.
import numpy as np
from aeon.classification.distance_based import KNeighborsTimeSeriesClassifier
X = np.array([[[1, 2, 3, 4, 5, 5]],
[[1, 2, 3, 4, 4, 2]],
[[8, 7, 6, 5, 4, 4]]])
y = np.array(['low', 'low', 'high'])
clf = KNeighborsTimeSeriesClassifier(distance="dtw")
clf.fit(X, y)
>>> KNeighborsTimeSeriesClassifier()
X_test = np.array(
[[[2, 2, 2, 2, 2, 2]], [[5, 5, 5, 5, 5, 5]], [[6, 6, 6, 6, 6, 6]]]
)
y_pred = clf.predict(X_test)
>>> ['low' 'high' 'high']
Clustering
Time series clustering groups similar time series together from a collection of
time series.
import numpy as np
from aeon.clustering import TimeSeriesKMeans
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)
>>> TimeSeriesKMeans(distance='dtw', n_clusters=2)
clu.labels_
>>> array([0, 0, 1])
X_test = np.array(
[[[2, 2, 2, 2, 2, 2]], [[5, 5, 5, 5, 5, 5]], [[6, 6, 6, 6, 6, 6]]]
)
clu.predict(X_test)
>>> array([1, 0, 0])
💬 Where to ask questions
For enquiries about the project or collaboration, our email is
contact@aeon-toolkit.org.
📚 Citation
If you use aeon
we would appreciate a citation of the following paper:
@article{aeon24jmlr,
author = {Matthew Middlehurst and Ali Ismail-Fawaz and Antoine Guillaume and Christopher Holder and David Guijo-Rubio and Guzal Bulatova and Leonidas Tsaprounis and Lukasz Mentel and Martin Walter and Patrick Sch{{\"a}}fer and Anthony Bagnall},
title = {aeon: a Python Toolkit for Learning from Time Series},
journal = {Journal of Machine Learning Research},
year = {2024},
volume = {25},
number = {289},
pages = {1--10},
url = {http://jmlr.org/papers/v25/23-1444.html}
}
If you let us know about your paper using aeon
, we will happily list it here.