pyts is a Python package for time series transformation and classification. It aims to make time series classification easily accessible by providing preprocessing and utility tools, and implementations of state-of-the-art algorithms. Most of these algorithms transform time series, thus pyts provides several tools to perform these transformations.
pyts requires:
- Python (>= 3.5)
- NumPy (>= 1.15.4)
- SciPy (>= 1.1.0)
- Scikit-Learn (>=0.20.1)
- Numba (>=0.41.0)
To run the examples Matplotlib (>=2.0.0) is required.
If you already have a working installation of numpy, scipy, scikit-learn and
numba, you can easily install pyts using pip
pip install pyts
You can also get the latest version of pyts by cloning the repository
git clone https://github.com/johannfaouzi/pyts.git
cd pyts
pip install .
After installation, you can launch the test suite from outside the source directory using pytest:
pytest pyts
See the changelog for a history of notable changes to pyts.
The development of this package is in line with the one of the scikit-learn community. Therefore, you can refer to their Development Guide. A slight difference is the use of Numba instead of Cython for optimization.
The section below gives some information about the implemented algorithms in pyts. For more information, please have a look at the HTML documentation available via ReadTheDocs.
pyts consists of the following modules:
-
approximation
: This module provides implementations of algorithms that approximate time series. Implemented algorithms are Piecewise Aggregate Approximation, Symbolic Aggregate approXimation, Discrete Fourier Transform, Multiple Coefficient Binning and Symbolic Fourier Approximation. -
bag_of_words
: This module consists of a class BagOfWords that transforms time series into bags of words. This approach is quite common in time series classification. -
classification
: This module provides implementations of algorithms that can classify time series. Implemented algorithms are KNeighborsClassifier, SAXVSM and BOSSVS. -
decomposition
: This module provides implementations of algorithms that decompose a time series into several time series. The only implemented algorithm is Singular Spectrum Analysis. -
image
: This module provides implementations of algorithms that transform time series into images. Implemented algorithms are Recurrence Plot, Gramian Angular Field and Markov Transition Field. -
metrics
: This module provides implementations of metrics that are specific to time series. Implemented metrics are Dynamic Time Warping with several variants and the BOSS metric. -
preprocessing
: This module provides most of the scikit-learn preprocessing tools but applied sample-wise (i.e. to each time series independently) instead of feature-wise, as well as an imputer of missing values using interpolation. More information is available at the pyts.preprocessing API documentation. -
transformation
: This module provides implementations of algorithms that transform a data set of time series with shape(n_samples, n_timestamps)
into a data set with shape(n_samples, n_features)
. Implemented algorithms are BOSS and WEASEL. -
utils
: a simple module with utility functions.