A scikit-learn compatible Python toolbox for learning with time series. sktime currently supports:
- State-of-the-art time series classification and regression algorithms,
- Classical forecasting including reduction strategies to regression,
- Benchmarking and post-hoc evaluation methods based on mlaut.
For deep learning methods, we have a separate extension package: sktime-dl.
sktime is under active development and we are looking for contributors. You can find our development road map below.
The package is available via PyPI using:
pip install sktime
But note that the package is actively being developed and currently not feature stable.
To install the development version, please see our advanced installation instructions.
- Tutorials can be found in the examples folder or can be launched directly on Binder.
- The full API documentation can be found here.
sktime extends the standard scikit-learn API to handle modular workflows for time series and panel data. The goal is to create a unified interface for various distinct but closely related learning tasks that arise in a temporal data context, such as time series classification or forecasting. To find our more, take a look at our paper.
Currently, the package implements:
- Various state-of-the-art algorithms for time series classification and regression, ported from the Java-based tsml toolkit,
- Transformers, including series-to-series transforms (e.g. Fourier transform), series-to-primitives transforms a.k.a. feature extractors (e.g. mean, variance), sub-divided into fittables (on table) and row-wise applicates,
- Pipelining, allowing to chain multiple transformers with a final estimator,
- Meta-estimators such as reduction strategies, grid-search tuners and ensembles, including ensembles for multivariate time series classification,
- Composite strategies, such as a fully customisable random forest for time-series classification, with interval segmentation and feature extraction,
- Classical forecasting algorithms and reduction strategies to solve forecasting tasks with time series regression algorithms.
In addition, sktime includes a high-level API that unifies multiple learning tasks, partially inspired by the APIs of mlr and openML. In particular, we introduce:
- Task objects that encapsulate meta-data from a dataset and the necessary information about the particular learning task, e.g. the instructions on how to derive the target/labels for classification from the data,
- Strategy objects that wrap estimators and allow to call fit and predict methods using data and a task object.
- Development of a time series annotation framework, including segmentation and outlier detection,
- Integration of supervised/panel forecasting based on a modified pysf API,
- Unsupervised methods including time series clustering,
- Design and implementation of a specialised data container for efficient handling of time series/panel data in a modelling workflow and separation of time series meta-data,
- Development of a probabilistic modelling framework for time series, including survival and point process models based on an adapted skpro interface.
We are actively looking for contributors. Please contact @fkiraly or @jasonlines for volunteering or information on paid opportunities, or simply chat with us or raise an issue.
Please also take a look at our Code of Conduct and contributing guidelines.
Former and current contributors to the API design and project management include:
- API design: Anthony Bagnall, Sajaysurya Ganesh, Viktor Kazakov, Franz Király, Jason Lines, Markus Löning
- Project management: Anthony Bagnall, Franz Király, Jason Lines, Markus Löning
If you use sktime in a scientific publication, we would appreciate citations to the following paper:
Bibtex entry:
@inproceedings{sktime, author = {L{\"{o}}ning, Markus and Bagnall, Anthony and Ganesh, Sajaysurya and Kazakov, Viktor and Lines, Jason and Kir{\'{a}}ly, Franz J}, booktitle = {Workshop on Systems for ML at NeurIPS 2019}, title = {{sktime: A Unified Interface for Machine Learning with Time Series}}, date = {2019}, }