A machine learning toolkit dedicated to time-series data

Overview

tslearn

The machine learning toolkit for time series analysis in Python

PyPI Documentation Build (Azure Pipelines) Codecov Downloads


Section Description
Installation Installing the dependencies and tslearn
Getting started A quick introduction on how to use tslearn
Available features An extensive overview of tslearn's functionalities
Documentation A link to our API reference and a gallery of examples
Contributing A guide for heroes willing to contribute
Citation A citation for tslearn for scholarly articles

Installation

There are different alternatives to install tslearn:

  • PyPi: python -m pip install tslearn
  • Conda: conda install -c conda-forge tslearn
  • Git: python -m pip install https://github.com/tslearn-team/tslearn/archive/master.zip

In order for the installation to be successful, the required dependencies must be installed. For a more detailed guide on how to install tslearn, please see the Documentation.

Getting started

1. Getting the data in the right format

tslearn expects a time series dataset to be formatted as a 3D numpy array. The three dimensions correspond to the number of time series, the number of measurements per time series and the number of dimensions respectively (n_ts, max_sz, d). In order to get the data in the right format, different solutions exist:

It should further be noted that tslearn supports variable-length timeseries.

>>> from tslearn.utils import to_time_series_dataset
>>> my_first_time_series = [1, 3, 4, 2]
>>> my_second_time_series = [1, 2, 4, 2]
>>> my_third_time_series = [1, 2, 4, 2, 2]
>>> X = to_time_series_dataset([my_first_time_series,
                                my_second_time_series,
                                my_third_time_series])
>>> y = [0, 1, 1]

2. Data preprocessing and transformations

Optionally, tslearn has several utilities to preprocess the data. In order to facilitate the convergence of different algorithms, you can scale time series. Alternatively, in order to speed up training times, one can resample the data or apply a piece-wise transformation.

>>> from tslearn.preprocessing import TimeSeriesScalerMinMax
>>> X_scaled = TimeSeriesScalerMinMax().fit_transform(X)
>>> print(X_scaled)
[[[0.] [0.667] [1.] [0.333] [nan]]
 [[0.] [0.333] [1.] [0.333] [nan]]
 [[0.] [0.333] [1.] [0.333] [0.333]]]

3. Training a model

After getting the data in the right format, a model can be trained. Depending on the use case, tslearn supports different tasks: classification, clustering and regression. For an extensive overview of possibilities, check out our gallery of examples.

>>> from tslearn.neighbors import KNeighborsTimeSeriesClassifier
>>> knn = KNeighborsTimeSeriesClassifier(n_neighbors=1)
>>> knn.fit(X_scaled, y)
>>> print(knn.predict(X_scaled))
[0 1 1]

As can be seen, the models in tslearn follow the same API as those of the well-known scikit-learn. Moreover, they are fully compatible with it, allowing to use different scikit-learn utilities such as hyper-parameter tuning and pipelines.

4. More analyses

tslearn further allows to perform all different types of analysis. Examples include calculating barycenters of a group of time series or calculate the distances between time series using a variety of distance metrics.

Available features

data processing clustering classification regression metrics
UCR Datasets Scaling TimeSeriesKMeans KNN Classifier KNN Regressor Dynamic Time Warping
Generators Piecewise KShape TimeSeriesSVC TimeSeriesSVR Global Alignment Kernel
Conversion(1, 2) KernelKmeans ShapeletModel MLP Barycenters
Early Classification Matrix Profile

Documentation

The documentation is hosted at readthedocs. It includes an API, gallery of examples and a user guide.

Contributing

If you would like to contribute to tslearn, please have a look at our contribution guidelines. A list of interesting TODO's can be found here. If you want other ML methods for time series to be added to this TODO list, do not hesitate to open an issue!

Referencing tslearn

If you use tslearn in a scientific publication, we would appreciate citations:

@article{JMLR:v21:20-091,
  author  = {Romain Tavenard and Johann Faouzi and Gilles Vandewiele and 
             Felix Divo and Guillaume Androz and Chester Holtz and 
             Marie Payne and Roman Yurchak and Marc Ru{\ss}wurm and 
             Kushal Kolar and Eli Woods},
  title   = {Tslearn, A Machine Learning Toolkit for Time Series Data},
  journal = {Journal of Machine Learning Research},
  year    = {2020},
  volume  = {21},
  number  = {118},
  pages   = {1-6},
  url     = {http://jmlr.org/papers/v21/20-091.html}
}

Acknowledgments

Authors would like to thank Mathieu Blondel for providing code for Kernel k-means and Soft-DTW.

Issues
  • [MRG] Flow to test for sklearn compatibility

    [MRG] Flow to test for sklearn compatibility

    Hello,

    This is a PR which allows to test automatically for all tslearn estimators whether they comply to the required checks of sklearn, allowing them to be used in their utilities such as GridSearchCV, Pipeline, ... The code to do this is currently located in tslearn/testing_utils.py, but should be moved to tslearn/testing when available.

    I also included an example demonstrating how GlobalGAKMeans can now be used with an sklearn pipeline, in tslearn/docs/examples/plot_gakkmeans_sklearn.

    All feedback is more than welcome!

    Kind regards, Gilles

    opened by GillesVandewiele 162
  • [WIP] Add User guide

    [WIP] Add User guide

    Fixes #247

    Might take some time before being ready for merge...

    opened by rtavenar 54
  • [MRG] Adding SAX+MINDIST to KNN

    [MRG] Adding SAX+MINDIST to KNN

    This PR contains the following changes:

    • 'sax' is now a valid metric for KNN:
    knn = KNeighborsTimeSeriesClassifier(n_neighbors=1, metric='sax')
    
    • Added BaseEstimator to classes in preprocessing module so that they can be used within a Pipeline (errors were raised when using TimeSeriesScalerMeanVariance)

    • Fixed a bug in kneighbors method which would always return [0] as nearest neighbor for every sample.

    knn = KNeighborsTimeSeriesClassifier(n_neighbors=1, metric='dtw')
    knn.fit(X_train, y_train)
    _, ind = knn.kneighbors(X_test)
    # ind would be filled with 0's
    
    • Slightly changed to code of kneighbors so that its result is consistent with sklearn. There was a small difference in breaking ties (tslearn would pick largest index while sklearn would pick the smallest index). Now the following code is equivalent:
    knn = KNeighborsTimeSeriesClassifier(n_neighbors=1, metric='dtw')
    knn.fit(X_train, y_train)
    _, ind = knn.kneighbors(X_test)
    
    knn = KNeighborsTimeSeriesClassifier(n_neighbors=1, metric='precomputed')
    all_X = numpy.vstack((X_train, X_test))
    distances = pairwise_distances(all_X, metric=dtw)
    X_train = distances[:len(X_train), :len(X_train)]
    X_test = distances[len(X_train):, :len(X_train)]
    knn.fit(X_train, y_train)
    _, ind = knn.kneighbors(X_test)
    
    # both ind vectors are now equal (while that was not the case before this PR)
    

    Some remarks:

    • I am unexperienced with numba; adding an njit decorator to cdist_sax did not work immediately, I could perhaps use some help with that.
    opened by GillesVandewiele 37
  • [WIP] Save models to hdf5 and other formats

    [WIP] Save models to hdf5 and other formats

    Hi,

    I thought it would be useful to save the KShape model without pickling. I implemented a simple to_hdf5() method for saving a KShape model to an hdf5 file and from_hdf5() for reloading it so that predictions can be done with the model.

    Changes to the KShape class:

    • the class attribute "model_attrs" is a list of attributes that are sufficient to describe the model.
    • to_dict() method packages the model attributes and params to a dict.
    • to_hdf5() and from_hdf() can be used to save/load the model to/from hdf5 files.
    • put instance attributes in constructor

    An hdftools module is added to handle saving a dict of numpy arrays to an hdf file.

    Usage:

    ks.to_hdf5('/path/to/file.h5')
    model = KShape.from_hdf5('path/to/file.h5')
    
    opened by kushalkolar 37
  • [MRG] Shapelet Support Tensorflow 2

    [MRG] Shapelet Support Tensorflow 2

    Made a few changes to support Tensorflow 2, and remove Keras as a separate dependancy. I'm just testing out tslearn and am not sure if these changes are wanted. No offense will be taken if these don't get included. :)

    Have a great day, I'm excited to see what tslearn has to offer.

    opened by page1 34
  • [MRG] Enable parallel computations in cdist_*

    [MRG] Enable parallel computations in cdist_*

    At the moment, I have worked on a first attempt for cdist_dtw.

    This is related to the discussion in #55

    opened by rtavenar 32
  • Replace implicit imports with explicit imports

    Replace implicit imports with explicit imports

    Fixes #134

    As title says, the implicit imports are replaced with explicit imports in test_estimators.py. It was a bit hard to find some of them from scikit-learn. Let's see if it improves code coverage.

    opened by johannfaouzi 27
  • [MRG] Accept variable-length time series for some pairs metrics/estimators

    [MRG] Accept variable-length time series for some pairs metrics/estimators

    This is an attempt to make it possible to use estimators with metrics like DTW on variable-length time series.

    The first attempt here is to make DTW/soft-DTW usable for kNN estimators on variable-length time series.

    The test I ran is:

    from tslearn.neighbors import KNeighborsTimeSeriesClassifier
    from tslearn.utils import to_time_series_dataset
    
    
    X = to_time_series_dataset([[1, 2, 3, 4], [1, 2, 3], [2, 5, 6, 7, 8, 9]])
    y = [0, 0, 1]
    
    clf = KNeighborsTimeSeriesClassifier(metric="dtw",
                                         n_neighbors=1,
                                         metric_params={"global_constraint": "sakoe_chiba"})
    clf.fit(X, y)
    print("---", clf._ts_fit)
    print(clf.predict(X))
    

    First, we have to think about whether the hack I introduced is a good way to reach our goal and second, once we have chosen a way to proceed, we will have to:

    • do the same for other estimators (all those that accept dtw, soft-dtw, gak as metrics, ideally)
    • find a way to hack sklearn k-fold variants, since there are some checks for all-finite entries in the datasets there which fail for variable-length time series, if I remember correctly

    @GillesVandewiele since you recently worked on making the estimators sklearn-compatible, could you review this PR?

    opened by rtavenar 27
  • Make binary wheels for all platforms

    Make binary wheels for all platforms

    Making binary wheels and uploading them to PyPi, would allow to pip install tslearn without needing a compiler or Cython.

    Usually this requires quite a bit of work, see e.g. https://github.com/MacPython/scikit-learn-wheels/. However there is a shortcut with https://github.com/regro/conda-press that might allow generating wheels from conda-forge builds. I have not used it yet personally, but it could be worth a try.

    opened by rth 23
  • kNN using SAX+MINDIST

    kNN using SAX+MINDIST

    When using this class what are the available "metrics" parameters that can be used? only "dtw"? any recommendation if i would want to use euclidean or for example the SAX distance, on using this classifier on a dataset with a SAX representation?

    new feature 
    opened by ManuelMonteiro24 22
  • Question about Infs and Nans

    Question about Infs and Nans

    This is a pure question, although it could also be a potential very minor improvement suggestion (at a very low priority). I notice that when my input data is a (numpy) array of Nans, then sometimes I would get Infs as distance values, which is easy to see and demonstrate in simple ways such as :

    >>> dtw([2, 4], [np.nan, np.nan])
    inf
    

    Whereas sometimes I get Nans as the distance. I wonder if the Nans come from some numeric stability aspects or whether there is some other known edge case that is known to yield Nan from this function.

    Obviously feeding Nans for a distance measure might be an abuse of a feature, as one might want to decide for themselves what are the semantics of comparing to Nan in their own particular case and it is probably not always a wise idea to let a package decide this without giving it thought as per one's mathematical ideas.

    That said, it seems that all-Nan vectors are yield zero distance:

    >>> dtw([[np.nan, np.nan]], [[np.nan, np.nan]])
    0.0
    

    And also have zero distance from an empty vector:

    >>> dtw([[np.nan, np.nan], [np.nan, np.nan]] , [])
    0.0
    

    So just curious about the Nans as the output of the dtw function, and also asking this more as a way of getting slightly more acquainted with the library.

    By the way, and not that the semantics need to be the same as the underlying numpy, when it is dealing with equality not distance:

    >>> np.array_equal([np.nan], [np.nan])
    False 
    >>> np.array_equal([0], [np.nan])
    False
    

    Thanks to anyone who happen to care posting a quick comment!

    new feature 
    opened by matanster 3
  • Custom metric on clustering

    Custom metric on clustering

    Is your feature request related to a problem? Please describe. I want to do some research by trying various custom metric on time series clustering. I already digging the docs and issues but can't find any tutorial on how to do that. This answer is partly answer the question.

    Describe the solution you'd like Maybe TimeSeriesKMeans could accept custom metric_type=custom and metric=funct? If it's already supported, how to do that?

    new feature 
    opened by yasirroni 2
  • [WIP] Upgrade check_estimator tests to sklearn 1.0

    [WIP] Upgrade check_estimator tests to sklearn 1.0

    I updated the code such that the tests can now run with sklearn 1.0.

    I made the following significant changes:

    1. ~~keras.api import error because of using tf.optimizers.Adam instead of keras.optimizers.Adam~~ (EDIT: this change has been reverted as tests failed.)
    2. Different yield_check functions from sklearn 1.0 only accept an estimator now, as opposed to (name, estimator) as before.
    3. Added new _xfail_checks to our TimeSeriesSVC and TimeSeriesSVR. This is similar as to what the devs from sklearn add to their SVC and SVR. This new flag _xfail_checks specifies which exact tests to skip for a certain class. This could perhaps be used for other tests that we skip manually atm.
    4. Patching in order to call _maybe_skip from sklearn to skip the necessary tests based on the _xfail_checks flag.
    5. Patched the _regression_dataset from sklearn to our own _create_large_ts_dataset such that time series data is used.
    opened by GillesVandewiele 10
  • Contributing.MD no longer contains instructions to run tests locally

    Contributing.MD no longer contains instructions to run tests locally

    It seems that the Contributing.MD file has been updated, but no longer includes a section that explains how to run the tests locally. I think that is an important section for new contributors in order to test their code locally first before pushing it to the main branch.

    new feature 
    opened by GillesVandewiele 3
  • Is it possible to plot the DTW-Path-

    Is it possible to plot the DTW-Path-"Matrix" (Sakoe-Chiba Band) If yes how? If not how could we implement this?

    What I mean is this: https://tslearn.readthedocs.io/en/stable/_images/sakoe_chiba.png Which is the visualization of the constraints based on the Sakoe-Chiba Settings, described here:

    https://tslearn.readthedocs.io/en/stable/user_guide/dtw.html

    Thanks a bunch for replies!

    opened by StefanR44 1
  • Upgrade to sklearn 1.0+

    Upgrade to sklearn 1.0+

    sklearn has recently published a new major version: 1.0.0, we should upgrade our dependency as well (and check for backward compatibility) and make sure all of our tests comply to the new API changes.

    new feature 
    opened by GillesVandewiele 3
  • Support python 3.10

    Support python 3.10

    Soon, we will want to migrate to python 3.10

    To support this, we will need to:

    • [x] update numpy>=1.19 (#373)
    • [ ] wait for tensorflow 2.8.0 release (hopefully by "the end of the year")
    • [ ] build wheels for cp310

    Please let me know if there is anything else that might block this migration. More specifically, what is the reason for currently capping numpy<=1.19? Over the coming weeks I might work on some of these, and submit PRs.

    new feature 
    opened by petoknm 3
  • Is it possible to limit the range of similarity computation? (Dynamic Time Warping) [K-Shape]

    Is it possible to limit the range of similarity computation? (Dynamic Time Warping) [K-Shape]

    I would like to have DTW only move within a certain range, so that a point will not be matched to another point that is more than x steps away.

    I hope this visualization helps: https://i.imgur.com/hlw9iOF.png

    Thanks in advance

    Picture edited from Paparrizos and Gravano, "k-Shape: Efficient and Accurate Clustering of Time Series" (2016)

    DTW range limit !

    opened by StefanR44 7
  • [HELP Request] How to use multivariate softDTW barycenter?

    [HELP Request] How to use multivariate softDTW barycenter?

    I have a problem similar to the one asked in 87, i.e my data set looks as follows, where each row belongs to a sequence and each row is a point in time:

    sequence | x0 | y0 | z0 | x1 | y1 | z1 | x2 | y2 | z2 | ... | z17 | x18 | y18 | z18 | x19 | y19 | z19 | x20 | y20 | z20 -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- 01.avi | 0.709314 | 0.595564 | 0.0 | 0.654333 | 0.577397 | 0.014865 | 0.599553 | 0.606103 | 0.006795 | ... | -0.091750 | 0.636288 | 0.801407 | -0.114206 | 0.620451 | 0.853457 | -0.118281 | 0.608881 | 0.899898 | -0.119697 01.avi | 0.719498 | 0.590370 | 0.0 | 0.638796 | 0.589439 | 0.032860 | 0.589824 | 0.661405 | 0.037496 | ... | -0.060961 | 0.666572 | 0.975270 | -0.060586 | 0.655359 | 1.046923 | -0.047032 | 0.649768 | 1.090954 | -0.036204 01.avi | 0.765117 | 0.503310 | 0.0 | 0.688468 | 0.490631 | 0.007665 | 0.633087 | 0.559083 | -0.004564 | ... | -0.094739 | 0.706533 | 0.864469 | -0.105250 | 0.692404 | 0.913337 | -0.092633 | 0.683403 | 0.929996 | -0.081646 02.avi | 0.847238 | 0.123516 | 0.0 | 0.802507 | 0.064425 | 0.013631 | 0.762274 | 0.058606 | 0.016534 | ... | -0.046354 | 0.735729 | 0.338295 | -0.041054 | 0.740595 | 0.307241 | -0.028013 | 0.758677 | 0.274317 | -0.017921 02.avi | 0.837651 | 0.125420 | 0.0 | 0.792646 | 0.065793 | 0.023380 | 0.755813 | 0.068872 | 0.030797 | ... | -0.033827 | 0.746565 | 0.347425 | -0.025514 | 0.745967 | 0.349261 | -0.013675 | 0.754414 | 0.329223 | -0.005807

    According to the documentation (https://tslearn.readthedocs.io/en/stable/variablelength.html?highlight=variable%20lenght), I can do something like this:

    # Each row in the multi-dimension array represents a time-series
    # Each array in a row represents a feature, the number of arrays in a row are times the features were encountered
    X = to_time_series_dataset([
        [[1,1,1], [1,1,1], [1,1,1]],   # time-series of length 3
        [[1,1,1], [1,1,1]],   # time-series of length 2
        [[4,4,4], [4,4,4]],   # # time-series of length 2
    ])
    y = np.array([0, 0, 1])
    
    X.shape
    >> (3, 3, 3)
    
    X
    >> array([[[ 0.,  0.,  0.],
            [ 1.,  1.,  1.],
            [ 2.,  2.,  2.]],
    
           [[ 2.,  2.,  2.],
            [ 3.,  3.,  3.],
            [nan, nan, nan]],
    
           [[ 4.,  4.,  4.],
            [ 5.,  5.,  5.],
            [nan, nan, nan]]])
    
    

    The time-series conversion seems good but throws an error when I try to run the following:

    initial_barycenter = ts_zeros(sz=5)
    bar = softdtw_barycenter(X, init=initial_barycenter)
    
    ...
    ...
    ...
    ~/anaconda3/envs/pytorch-build/lib/python3.8/site-packages/sklearn/metrics/pairwise.py in euclidean_distances(X, Y, Y_norm_squared, squared, X_norm_squared)
        260     paired_distances : distances betweens pairs of elements of X and Y.
        261     """
    --> 262     X, Y = check_pairwise_arrays(X, Y)
        263 
        264     # If norms are passed as float32, they are unused. If arrays are passed as
    
    ~/anaconda3/envs/pytorch-build/lib/python3.8/site-packages/sklearn/metrics/pairwise.py in check_pairwise_arrays(X, Y, precomputed, dtype, accept_sparse, force_all_finite, copy)
        151                              (X.shape[0], X.shape[1], Y.shape[0]))
        152     elif X.shape[1] != Y.shape[1]:
    --> 153         raise ValueError("Incompatible dimension for X and Y matrices: "
        154                          "X.shape[1] == %d while Y.shape[1] == %d" % (
        155                              X.shape[1], Y.shape[1]))
    
    ValueError: Incompatible dimension for X and Y matrices: X.shape[1] == 1 while Y.shape[1] == 3
    

    What am I doing wrong?

    new feature 
    opened by RafayAK 1
  • silhouette_score crashes on a pure python list.

    silhouette_score crashes on a pure python list.

    Describe the bug When passing a list to silhouette_score as such:

    silhouette_score(X, tsk.labels_, metric='euclidean')
    

    with X a pure python list. It crashes:

    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-17-77a8b5db76ff> in <module>
          4     tsk = TimeSeriesKMeans(n_clusters=k)
          5     tsk.fit(X)
    ----> 6     print(k, silhouette_score(X, tsk.labels_, metric='euclidean'))
    
    /usr/local/lib/python3.8/dist-packages/tslearn/clustering/utils.py in silhouette_score(X, labels, metric, sample_size, metric_params, n_jobs, verbose, random_state, **kwds)
        177     elif metric == "euclidean":
        178         X_ = to_time_series_dataset(X)
    --> 179         X_ = X_.reshape((X.shape[0], -1))
        180         sklearn_X = cdist(X_, X_, metric="euclidean")
        181     else:
    
    AttributeError: 'list' object has no attribute 'shape'
    

    Passing np.array(X) instead fixes this issue,

    Expected behavior One would expect tslearn to do the conversion to numpy array when a list is passed.

    bug 
    opened by GillesVandewiele 0
Releases(v0.5.2)
Kats is a toolkit to analyze time series data, a lightweight, easy-to-use, and generalizable framework to perform time series analysis.

Kats, a kit to analyze time series data, a lightweight, easy-to-use, generalizable, and extendable framework to perform time series analysis, from understanding the key statistics and characteristics, detecting change points and anomalies, to forecasting future trends.

Facebook Research 3.4k Jan 20, 2022
Kubeflow is a machine learning (ML) toolkit that is dedicated to making deployments of ML workflows on Kubernetes simple, portable, and scalable.

SDK: Overview of the Kubeflow pipelines service Kubeflow is a machine learning (ML) toolkit that is dedicated to making deployments of ML workflows on

Kubeflow 2.6k Jan 17, 2022
A data preprocessing package for time series data. Design for machine learning and deep learning.

A data preprocessing package for time series data. Design for machine learning and deep learning.

Allen Chiang 112 Jan 10, 2022
A Python toolkit for rule-based/unsupervised anomaly detection in time series

Anomaly Detection Toolkit (ADTK) Anomaly Detection Toolkit (ADTK) is a Python package for unsupervised / rule-based time series anomaly detection. As

Arundo Analytics 769 Jan 15, 2022
A unified framework for machine learning with time series

Welcome to sktime A unified framework for machine learning with time series We provide specialized time series algorithms and scikit-learn compatible

The Alan Turing Institute 4.8k Jan 15, 2022
Python module for machine learning time series:

seglearn Seglearn is a python package for machine learning time series or sequences. It provides an integrated pipeline for segmentation, feature extr

David Burns 485 Jan 16, 2022
Merlion: A Machine Learning Framework for Time Series Intelligence

Merlion is a Python library for time series intelligence. It provides an end-to-end machine learning framework that includes loading and transforming data, building and training models, post-processing model outputs, and evaluating model performance. I

Salesforce 2.3k Jan 13, 2022
Empyrial is a Python-based open-source quantitative investment library dedicated to financial institutions and retail investors

By Investors, For Investors. Want to read this in Chinese? Click here Empyrial is a Python-based open-source quantitative investment library dedicated

Santosh 447 Jan 11, 2022
A toolkit for making real world machine learning and data analysis applications in C++

dlib C++ library Dlib is a modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++ to solve real worl

Davis E. King 10.9k Jan 20, 2022
ml4h is a toolkit for machine learning on clinical data of all kinds including genetics, labs, imaging, clinical notes, and more

ml4h is a toolkit for machine learning on clinical data of all kinds including genetics, labs, imaging, clinical notes, and more

Broad Institute 43 Jan 14, 2022
Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth.

Prophet: Automatic Forecasting Procedure Prophet is a procedure for forecasting time series data based on an additive model where non-linear trends ar

Facebook 13.9k Jan 13, 2022
STUMPY is a powerful and scalable Python library for computing a Matrix Profile, which can be used for a variety of time series data mining tasks

STUMPY STUMPY is a powerful and scalable library that efficiently computes something called the matrix profile, which can be used for a variety of tim

TD Ameritrade 2k Jan 14, 2022
Automatically build ARIMA, SARIMAX, VAR, FB Prophet and XGBoost Models on Time Series data sets with a Single Line of Code. Now updated with Dask to handle millions of rows.

Auto_TS: Auto_TimeSeries Automatically build multiple Time Series models using a Single Line of Code. Now updated with Dask. Auto_timeseries is a comp

AutoViz and Auto_ViML 377 Jan 21, 2022
Visualize classified time series data with interactive Sankey plots in Google Earth Engine

sankee Visualize changes in classified time series data with interactive Sankey plots in Google Earth Engine Contents Description Installation Using P

Aaron Zuspan 56 Jan 10, 2022
MaD GUI is a basis for graphical annotation and computational analysis of time series data.

MaD GUI Machine Learning and Data Analytics Graphical User Interface MaD GUI is a basis for graphical annotation and computational analysis of time se

Machine Learning and Data Analytics Lab FAU 4 Jan 4, 2022
Examples and code for the Practical Machine Learning workshop series

Practical Machine Learning Workshop Series Practical Machine Learning for Quantitative Finance Post conference workshop at the WBS Spring Conference D

CompatibL 20 Aug 22, 2021
A Powerful Serverless Analysis Toolkit That Takes Trial And Error Out of Machine Learning Projects

KXY: A Seemless API to 10x The Productivity of Machine Learning Engineers Documentation https://www.kxy.ai/reference/ Installation From PyPi: pip inst

KXY Technologies, Inc. 10 Dec 15, 2021
Model Validation Toolkit is a collection of tools to assist with validating machine learning models prior to deploying them to production and monitoring them after deployment to production.

Model Validation Toolkit is a collection of tools to assist with validating machine learning models prior to deploying them to production and monitoring them after deployment to production.

FINRA 13 Jan 12, 2022
Open source time series library for Python

PyFlux PyFlux is an open source time series library for Python. The library has a good array of modern time series models, as well as a flexible array

Ross Taylor 1.9k Jan 16, 2022