All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Changelogs for this project are recorded in this file since v0.2.0.
- The structure of the class
Backend
has been simplified.
- Option
compute_with_backend
in functionssoft_dtw
,soft_dtw_alignment
,cdist_soft_dtw
andcdist_soft_dtw_normalized
.PyTorch
automatic differentiation can now be used when these functions are using thePyTorch
backend.
- Fixed error in
LearningShapelets
when input parametern_shapelets_per_size
equalsNone
. - Fixed bug related to
SoftDTWLossPytorch
with optionnormalize=True
when used on inputs of different lengths. - Fixed error in function
from_hdf5
for array inputs. - Fixed
readthedocs
test failing by replacingbuild.image
(deprecated) withbuild.os
.
- Fixed an incorrect calculation of the normalization term for
cdist_soft_dtw_normalized
whendataset2
is provided. - Fixed UCR/UEA datasets download link
- Fixed an import error when
torch
is not installed. This error appeared in tslearn v0.6.PyTorch
is now an optional dependency.
- Support of the
PyTorch
backend for the metrics oftslearn
. In particular, the Dynamic Time Warping (DTW) metric and the Soft-DTW metric now support thePyTorch
backend.
- Support for Python version 3.7 is dropped
- Elements that were deprecated in v0.4 are now removed, as announced
- Support for
macOS-10.15
is replaced by support formacOS-12
- Support for
scikit-learn 0.23
is replaced by support forscikit-learn 1.0
- Specify supported
TensorFlow
version (2.9.0)
- Support for Python versions 3.9 and 3.10
- Fixed a bug about result of path in
lcss_path_from_metric
function - Fixed incompatibilities between
NumPy
,TensorFlow
andscikit-learn
versions - Fixed a bug preventing tslearn installation by removing the
NumPy
version constraint (<=1.19) in the filepyproject.toml
- Cython is now replaced by Numba
- Support for Python versions 3.5 and 3.6 is dropped
- In docs, change references to
master
branch tomain
branch.
- Code refactoring to have all subpackages in subfolders
- Improved warnings in
datasets
loading shapelets
module is now compatible withtensorflow
2.4
- Added canonical time warping (
ctw
andctw_path
) soft_dtw_alignment
provides soft alignment path for soft-dtwlcss
is a similarity measure based on the longest common subsequencelcss_path_from_metric
allows one to pick a dedicated ground metric on top of which the LCSS algorithm can be run
- numpy array hyper-parameters can now be serialized using
to_*()
methods - avoid
DivisionByZero
inMinMaxScaler
- Fixed incompatibilities with
scikit-learn
0.24
- k-means initialization function within
clustering/kmeans.py
updated to be compatible withscikit-learn
0.24 - Better initialization schemes for
TimeSeriesKMeans
that lead to more consistent clustering runs (helps avoid empty cluster situations) TimeSeriesScalerMeanVariance
andTimeSeriesScalerMinMax
are now completely sklearn-compliant- The
shapelets
module now requires tensorflow>=2 as dependency (was keras tensorflow==1.* up to version 0.3) GlobalAlignmentKernelKMeans
is deprecated in favor ofKernelKMeans
that accepts various kernels (and "gak" is the default)ShapeletModel
is now calledLearningShapelets
to be more explicit about which shapelet-based classifier is implemented.ShapeletModel
is still available as an alias, but is now considered part of the private API
- Python 3.8 support
dtw_path_from_metric
allows one to pick a dedicated ground metric on top of which the DTW algorithm can be run- Nearest Neighbors on SAX representation (with custom distance)
- Calculate pairwise distance matrix between SAX representations
PiecewiseAggregateApproximation
can now handle variable lengthsShapeletModel
is now serializable to JSON and pickle formats- Multivariate datasets from the UCR/UEA archive are now available through
UCR_UEA_datasets().load_dataset(...)
ShapeletModel
now accepts variable-length time series dataset; amax_size
parameter has been introduced to save room at fit time for possibly longer series to be fed to the model afterwardsShapeletModel
now accepts ascale
parameter that drives time series pre-processing for better convergenceShapeletModel
now has a publichistory_
attribute that stores loss and accuracy along fit epochs- SAX and variants now accept a
scale
parameter that drives time series pre-processing to fit the N(0,1) underlying hypothesis for SAX TimeSeriesKMeans
now has atransform
method that returns distances to centroids- A new
matrix_profile
module is added that allowsMatrixProfile
to be computed using the stumpy library or using a naive "numpy" implementation. - A new
early_classification
module is added that offers early classification estimators - A new
neural_network
module is added that offers Multi Layer Perceptron estimators for classification and regression
- Estimators that can operate on variable length time series now allow for test time datasets to have a different length from the one that was passed at fit time
- Bugfix in
kneighbors()
methods.
- Support for Python 2 is dropped
- Fixed a bug in
TimeSeriesSVC
andTimeSeriesSVR
that caused user-inputgamma
to be ignored (always treated as if it were"auto"
) forgak
kernel
dtw_barycenter_averaging
is made faster by using vectorized computationsdtw_barycenter_averaging
can be restarted several times to reach better local optima using a parametern_init
set to 1 by default- Functions
load_timeseries_txt
andsave_timeseries_txt
from the utils module have changed their names toload_time_series_txt
andsave_time_series_txt
. Old names can still be used but considered deprecated and removed from the public API documentation for the sake of harmonization - Default value for the maximum number of iterations to train
ShapeletModel
andSerializableShapeletModel
is now set to 10,000 (used to be 100) TimeSeriesScalerMeanVariance
andTimeSeriesScalerMinMax
now ignore any NaNs when calling their respectivetransform
methods in order to better mirror scikit-learn's handling of missing data in preprocessing.KNeighborsTimeSeries
now accepts variable-length time series as inputs when used with metrics that can deal with it (eg. DTW)- When constrained DTW is used, if the name of the constraint is not given but its parameter is set, that is now considered sufficient to identify the constraint.
KNeighborsTimeSeriesRegressor
is a new regressor based on k-nearest-neighbors that accepts the same metrics asKNeighborsTimeSeriesClassifier
- A
set_weights
method is added to theShapeletModel
and
SerializableShapeletModel
estimators subsequence_path
andsubsequence_cost_matrix
are now part of the public API and properly documented as such with an example use case in which more than one path could be of interest (cf.plot_sdtw.py
)verbose
levels can be set for all functions / classes that usejoblib
for parallel computations andjoblib
levels are used;- conversion functions are provided in the
utils
module to interact with other Python time series packages (pyts
,sktime
,cesium
,seglearn
,tsfresh
,stumpy
,pyflux
) dtw_barycenter_averaging_subgradient
is now available to compute DTW barycenter based on subgradient descentdtw_limited_warping_length
is provided as a way to compute DTW under upper bound constraint on warping path lengthBaseModelPackage
is a base class for serializing models to hdf5, json and pickle. h5py is added to requirements for hdf5 support.BaseModelPackage
is used to add serialization functionality to the following models:GlobalAlignmentKernelKMeans
,TimeSeriesKMeans
,KShape
,KNeighborsTimeSeries
,KNeighborsTimeSeriesClassifier
,PiecewiseAggregateApproximation
,SymbolicAggregateApproximation
, andOneD_SymbolicAggregateApproximation
- The
tests
subdirectory is now made a python package and hence included in wheels
- The way version number is retrieved in
setup.py
was not working properly on Python 3.4 (and made the install script fail), switched back to the previous version
- A
RuntimeWarning
is raised when an'itakura'
constraint is set that is unfeasible given the provided shapes.
'itakura'
and'sakoe_chiba'
were swapped inmetrics.compute_mask
tslearn
estimators are now automatically tested to matchsklearn
requirements "as much as possible" (cf.tslearn
needs in terms of data format, etc.)cdist_dtw
andcdist_gak
now have an_jobs
parameter to parallelize distance computations usingjoblib.Parallel
n_jobs
is also available as a prameter insilhouette_score
,TimeSeriesKMeans
,KNeighborsTimeSeries
,KNeighborsTimeSeriesClassifier
,TimeSeriesSVC
,TimeSeriesSVR
andGlobalAlignmentKernelKMeans
- Faster DTW computations using
numba
tslearn
estimators can be used in conjunction withsklearn
pipelines and cross-validation tools, even (for those concerned) with variable-length data- doctests have been reduced to those necessary for documentation purposes, the
other tests being moved to
tests/*.py
- The list of authors for the
tslearn
bibliographic reference has been updated to include Johann Faouzi and Gilles Van de Wiele - In
TimeSeriesScalerMinMax
,min
andmax
parameters are now deprecated in favor ofvalue_range
. Will be removed in v0.4 - In
TimeSeriesKMeans
andsilhouette_score
,'gamma_sdtw'
is now deprecated as a key formetric_params
in favor ofgamma
. Will be removed in v0.4
- Barycenter methods implemented as estimators are no longer provided: use
dedicated functions from the
tslearn.barycenters
module instead