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 |
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.
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.
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]], # 3D array example (univariate)
[[1, 2, 3, 4, 4, 2]], # Three samples, one channel,
[[8, 7, 6, 5, 4, 4]]]) # six series length
y = np.array(['low', 'low', 'high']) # class labels for each sample
clf = KNeighborsTimeSeriesClassifier(distance="dtw")
clf.fit(X, y) # fit the classifier on train data
>>> 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) # make class predictions on new data
>>> ['low' 'high' 'high']
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]], # 3D array example (univariate)
[[1, 2, 3, 4, 4, 2]], # Three samples, one channel,
[[8, 7, 6, 5, 4, 4]]]) # six series length
clu = TimeSeriesKMeans(distance="dtw", n_clusters=2)
clu.fit(X) # fit the clusterer on train data
>>> TimeSeriesKMeans(distance='dtw', n_clusters=2)
clu.labels_ # get training cluster 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) # Assign clusters to new data
>>> array([1, 0, 0])
Type | Platforms |
---|---|
🐛 Bug Reports | GitHub Issue Tracker |
✨ Feature Requests & Ideas | GitHub Issue Tracker & Slack |
💻 Usage Questions | GitHub Discussions & Slack |
💬 General Discussion | GitHub Discussions & Slack |
🏭 Contribution & Development | Slack |
For enquiries about the project or collaboration, our email is [email protected].
If you are interested in contributing to aeon
, please see our contributing guide
and have a read through before assigning an issue and creating a pull request. Be
aware that the latest
version of the docs is the development version, and the stable
version is the latest release.
The aeon
developers are volunteers so please be patient with responses to comments and
pull request reviews. If you have any questions, feel free to ask using the above
mediums.
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.
aeon
was forked from sktime
v0.16.0
in 2022 by an initial group of eight core
developers.