Skip to main content

A toolkit for time series machine learning

Project description

aeon logo

⌛ Welcome to aeon

aeon is an open-source toolkit for time series machine learning. Fully compatible with scikit-learn, it brings together the latest machine learning methods alongside a wide range of classical approaches for tasks such as forecasting, clustering, and classification.

Our goal is to provide a comprehensive collection of state-of-the-art time series algorithms, with efficient implementations powered by numba, and to promote reproducible research in the field of time series machine learning.

The latest aeon release is v1.3.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
  • transformations.collection.self_supervised
  • transformations.collection.imbalance
Overview
CI/CD github-actions-release github-actions-main github-actions-nightly docs-main docs-main codecov openssf-scorecard
Code !pypi !conda !python-versions !black license binder
Community !slack !linkedin !x-twitter !medium
Affiliation numfocus

⚙️ Installation

aeon requires a Python version of 3.10 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]],  # 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']

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]],  # 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])

💬 Where to ask questions

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 contact@aeon-toolkit.org.

🔨 Contributing to aeon

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.

📚 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.

👥 Further information

aeon was forked from sktime v0.16.0 in 2022 by an initial group of eight core developers. You can read more about the project's history and governance structure in our About Us page.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aeon-1.3.0.tar.gz (5.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aeon-1.3.0-py3-none-any.whl (6.5 MB view details)

Uploaded Python 3

File details

Details for the file aeon-1.3.0.tar.gz.

File metadata

  • Download URL: aeon-1.3.0.tar.gz
  • Upload date:
  • Size: 5.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aeon-1.3.0.tar.gz
Algorithm Hash digest
SHA256 4892cd7446ce2c436d6312ee2ed4cf30bd232739bff8d9aab5acd37032b91031
MD5 0bcae5617f5a695041583921b93f8b3a
BLAKE2b-256 a29c82e3e0c29b0a095ec2dec6574e4701dafa64ee0bac0c8b21e20ca146ddcf

See more details on using hashes here.

Provenance

The following attestation bundles were made for aeon-1.3.0.tar.gz:

Publisher: release.yml on aeon-toolkit/aeon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aeon-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: aeon-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 6.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aeon-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 90e69e7dce01035395468f9afd83f15e34d66513e709456e4dd7763c9aa3cda8
MD5 25ddde4251f99f097b10ce3561b8d7f0
BLAKE2b-256 80cdae5e94e68efeb6191ef57dccd9ebd7fb14f8c76375822870bf4e831579cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for aeon-1.3.0-py3-none-any.whl:

Publisher: release.yml on aeon-toolkit/aeon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page