summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNavid Afkhami <navid.afkhami@mdc-berlin.de>2023-07-07 12:00:57 +0200
committerRicardo Wurmus <rekado@elephly.net>2023-07-07 12:01:28 +0200
commitfcfdb8f05ed0228ede47e9d2a0de5b05b09dd7be (patch)
tree81251f435b655fe103ac1181957ea645d020c10c
parent8e83db0bce72547930b28fe15c294854ecd6271a (diff)
gnu: Add python-tslearn.
* gnu/packages/machine-learning.scm (python-tslearn): New variable. Co-authored-by: Ricardo Wurmus <rekado@elephly.net>.
-rw-r--r--gnu/packages/machine-learning.scm67
1 files changed, 67 insertions, 0 deletions
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 755fe08b33..5b98705943 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -1489,6 +1489,73 @@ number of threads used in the threadpool-backed of common native libraries used
for scientific computing and data science (e.g. BLAS and OpenMP).")
(license license:bsd-3)))
+(define-public python-tslearn
+ (package
+ (name "python-tslearn")
+ (version "0.6.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tslearn-team/tslearn")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1fhs8c28hdqsyj8kdhzrmrxrh4w92x6nf3gm026xapp9divvljd6"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ '(list "-k"
+ (string-append
+ ;; This one fails because of a difference in accuracy.
+ "not test_all_estimators[LearningShapelets-LearningShapelets]"
+ ;; XXX: It's embarrassing to disable these two, but the truth is
+ ;; that there's only so much we can do to force this package to
+ ;; work with Tensorflow 1.9. It's still worth having this
+ ;; package, because it can be used without the Tensorflow
+ ;; backend.
+ ;; TypeError: cannot pickle '_thread.RLock' object
+ " and not test_shapelets"
+ ;; TypeError: Expected binary or unicode string, got 2
+ " and not test_serialize_shapelets"))
+ #:phases
+ '(modify-phases %standard-phases
+ (add-after 'unpack 'compatibility
+ (lambda _
+ (substitute* "tslearn/tests/sklearn_patches.py"
+ (("_pairwise_estimator_convert_X")
+ "_enforce_estimator_tags_X")
+ (("pairwise_estimator_convert_X\\(([^,]+), ([^,\\)]+)" _ a b)
+ (string-append "pairwise_estimator_convert_X(" b ", " a)))
+ (substitute* "tslearn/tests/test_shapelets.py"
+ (("tf.optimizers.Adam")
+ "tf.keras.optimizers.Adam"))
+ (substitute* "tslearn/shapelets/shapelets.py"
+ (("tf.keras.utils.set_random_seed")
+ "tf.set_random_seed")
+ (("def __call__\\(self, shape, dtype=None\\):")
+ "def __call__(self, shape, dtype=None, partition_info=None):")
+ (("tf.math.is_finite")
+ "tf.is_finite")))))))
+ (propagated-inputs (list python-cesium
+ python-h5py
+ python-joblib
+ python-numba
+ python-numpy
+ python-pandas
+ python-scipy
+ python-scikit-learn
+ tensorflow
+ python-wheel))
+ (native-inputs (list python-pytest))
+ (home-page "https://github.com/tslearn-team/tslearn")
+ (synopsis "Machine learning toolkit for time series data")
+ (description "This is a Python library for time series data mining.
+It provides tools for time series classification, clustering
+and forecasting.")
+ (license license:bsd-2)))
+
(define-public python-imbalanced-learn
(package
(name "python-imbalanced-learn")