Skip to content
/ sktime Public
forked from sktime/sktime

A scikit-learn compatible Python toolbox for machine learning with time series

License

Notifications You must be signed in to change notification settings

aclong/sktime

 
 

travis appveyor pypi gitter binder

sktime

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.

Installation

The package is available via PyPI using:

pip install sktime

But note that the package is actively being developed and currently not feature stable.

Development version

To install the development version, please see our advanced installation instructions.

Documentation

  • Tutorials can be found in the examples folder or can be launched directly on Binder.
  • The full API documentation can be found here.

Overview

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 road map

  1. Development of a time series annotation framework, including segmentation and outlier detection,
  2. Integration of supervised/panel forecasting based on a modified pysf API,
  3. Unsupervised methods including time series clustering,
  4. 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,
  5. Development of a probabilistic modelling framework for time series, including survival and point process models based on an adapted skpro interface.

Contributions

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

How to cite sktime

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},
}

About

A scikit-learn compatible Python toolbox for machine learning with time series

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 97.8%
  • Other 2.2%