From e6732f353d2cd1d973e34db239d85a53a3d4805b Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Mon, 23 Aug 2021 17:05:03 +0300 Subject: [PATCH 01/41] Used check_scalar to check parameters. --- sklearn/cluster/_bicluster.py | 40 ++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 6b1c824fc32ec..10e78106f3a49 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -5,6 +5,7 @@ from abc import ABCMeta, abstractmethod import numpy as np +import numbers from scipy.linalg import norm from scipy.sparse import dia_matrix, issparse @@ -13,6 +14,7 @@ from . import KMeans, MiniBatchKMeans from ..base import BaseEstimator, BiclusterMixin from ..utils import check_random_state +from ..utils import check_scalar from ..utils.extmath import make_nonnegative, randomized_svd, safe_sparse_dot @@ -102,7 +104,7 @@ def __init__( self.n_init = n_init self.random_state = random_state - def _check_parameters(self): + def _check_parameters(self, n_samples): legal_svd_methods = ("randomized", "arpack") if self.svd_method not in legal_svd_methods: raise ValueError( @@ -110,6 +112,14 @@ def _check_parameters(self): self.svd_method, legal_svd_methods ) ) + scalars_checks = { + "n_clusters": { "target_type": numbers.Integral,"min_val": 1, "max_val": n_samples}, + "n_init": { "target_type": numbers.Integral,"min_val": 1 }, + } + for scalar_name in scalars_checks: + check_scalar( + getattr(self, scalar_name), scalar_name, **scalars_checks[scalar_name] + ) def fit(self, X, y=None): """Create a biclustering for X. @@ -128,7 +138,7 @@ def fit(self, X, y=None): SpectralBiclustering instance. """ X = self._validate_data(X, accept_sparse="csr", dtype=np.float64) - self._check_parameters() + self._check_parameters(X.shape[0]) self._fit(X) return self @@ -492,7 +502,7 @@ def __init__( self.n_components = n_components self.n_best = n_best - def _check_parameters(self): + def _check_parameters(self, n_sample): super()._check_parameters() legal_methods = ("bistochastic", "scale", "log") if self.method not in legal_methods: @@ -515,22 +525,14 @@ def _check_parameters(self): " or an iterable with two integers:" " (n_row_clusters, n_column_clusters)" ) from e - if self.n_components < 1: - raise ValueError( - "Parameter n_components must be greater than 0," - " but its value is {}".format(self.n_components) - ) - if self.n_best < 1: - raise ValueError( - "Parameter n_best must be greater than 0, but its value is {}".format( - self.n_best - ) - ) - if self.n_best > self.n_components: - raise ValueError( - "n_best cannot be larger than n_components, but {} > {}".format( - self.n_best, self.n_components - ) + + scalars_checks = { + "n_components": { "target_type": numbers.Integral,"min_val": 1}, + "n_best": { "target_type": numbers.Integral,"min_val": 1, "max_val": self.n_components }, + } + for scalar_name in scalars_checks: + check_scalar( + getattr(self, scalar_name), scalar_name, **scalars_checks[scalar_name] ) def _fit(self, X): From 4940669817a1042553e1fc9ce3ca77936dcdcb6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 2 Sep 2021 21:54:09 +0300 Subject: [PATCH 02/41] Update _bicluster.py PIP8 issues are fixed and loops are removed --- sklearn/cluster/_bicluster.py | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 10e78106f3a49..9f6ac66c1bb09 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -112,14 +112,8 @@ def _check_parameters(self, n_samples): self.svd_method, legal_svd_methods ) ) - scalars_checks = { - "n_clusters": { "target_type": numbers.Integral,"min_val": 1, "max_val": n_samples}, - "n_init": { "target_type": numbers.Integral,"min_val": 1 }, - } - for scalar_name in scalars_checks: - check_scalar( - getattr(self, scalar_name), scalar_name, **scalars_checks[scalar_name] - ) + check_scalar(self.n_clusters, "n_clusters", target_type=numbers.Integral, min_val=1, max_val=n_samples) + check_scalar(self.n_init, "n_init", target_type=numbers.Integral, min_val=1) def fit(self, X, y=None): """Create a biclustering for X. @@ -525,15 +519,8 @@ def _check_parameters(self, n_sample): " or an iterable with two integers:" " (n_row_clusters, n_column_clusters)" ) from e - - scalars_checks = { - "n_components": { "target_type": numbers.Integral,"min_val": 1}, - "n_best": { "target_type": numbers.Integral,"min_val": 1, "max_val": self.n_components }, - } - for scalar_name in scalars_checks: - check_scalar( - getattr(self, scalar_name), scalar_name, **scalars_checks[scalar_name] - ) + check_scalar(self.n_components, "n_components", target_type=numbers.Integral, min_val=1) + check_scalar(self.n_best, "n_best", target_type=numbers.Integral, min_val=1, max_val=self.n_components) def _fit(self, X): n_sv = self.n_components From 4a525614f37cb098b76e1fd4c0e0c059b77ac835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Wed, 15 Sep 2021 23:58:05 +0300 Subject: [PATCH 03/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 9f6ac66c1bb09..41b7fe65be253 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -112,7 +112,8 @@ def _check_parameters(self, n_samples): self.svd_method, legal_svd_methods ) ) - check_scalar(self.n_clusters, "n_clusters", target_type=numbers.Integral, min_val=1, max_val=n_samples) + check_scalar(self.n_clusters, "n_clusters", target_type=numbers.Integral, + min_val=1, max_val=n_samples) check_scalar(self.n_init, "n_init", target_type=numbers.Integral, min_val=1) def fit(self, X, y=None): @@ -519,8 +520,10 @@ def _check_parameters(self, n_sample): " or an iterable with two integers:" " (n_row_clusters, n_column_clusters)" ) from e - check_scalar(self.n_components, "n_components", target_type=numbers.Integral, min_val=1) - check_scalar(self.n_best, "n_best", target_type=numbers.Integral, min_val=1, max_val=self.n_components) + check_scalar(self.n_components, "n_components", target_type=numbers.Integral, + min_val=1) + check_scalar(self.n_best, "n_best", target_type=numbers.Integral, + min_val=1, max_val=self.n_components) def _fit(self, X): n_sv = self.n_components From 653baf9cb2bf93144b155126edec0cfda120f733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 00:30:20 +0300 Subject: [PATCH 04/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 41b7fe65be253..05d4804f9f9d7 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -498,7 +498,7 @@ def __init__( self.n_best = n_best def _check_parameters(self, n_sample): - super()._check_parameters() + super()._check_parameters(n_sample) legal_methods = ("bistochastic", "scale", "log") if self.method not in legal_methods: raise ValueError( From 712ceff9331be3d9b5ba80189d27f4659fa123a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 01:48:31 +0300 Subject: [PATCH 05/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 05d4804f9f9d7..4cc492301f5e2 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -112,8 +112,10 @@ def _check_parameters(self, n_samples): self.svd_method, legal_svd_methods ) ) - check_scalar(self.n_clusters, "n_clusters", target_type=numbers.Integral, - min_val=1, max_val=n_samples) + check_scalar(self.n_clusters, "n_clusters", + target_type=(numbers.Integral,(numbers.Integral,numbers.Integral)), + min_val=1, + max_val=n_samples) check_scalar(self.n_init, "n_init", target_type=numbers.Integral, min_val=1) def fit(self, X, y=None): From 949c2bbc19dd284705f6c78c67a70686aaa6133c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 02:16:10 +0300 Subject: [PATCH 06/41] Create _bicluster.py I have activated the parameter checks --- sklearn/cluster/_bicluster.py | 38 +++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 4cc492301f5e2..3ff21bcae24cf 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -112,10 +112,6 @@ def _check_parameters(self, n_samples): self.svd_method, legal_svd_methods ) ) - check_scalar(self.n_clusters, "n_clusters", - target_type=(numbers.Integral,(numbers.Integral,numbers.Integral)), - min_val=1, - max_val=n_samples) check_scalar(self.n_init, "n_init", target_type=numbers.Integral, min_val=1) def fit(self, X, y=None): @@ -334,8 +330,30 @@ def __init__( super().__init__( n_clusters, svd_method, n_svd_vecs, mini_batch, init, n_init, random_state ) + + def _check_parameters(self, n_sample): + super()._check_parameters(n_sample) + legal_methods = ('randomized', 'arpack') + if self.method not in legal_methods: + raise ValueError( + "Unknown method: '{0}'. method must be one of {1}.".format( + self.method, legal_methods + ) + ) + check_scalar(self.n_clusters, "n_clusters", + target_type=(numbers.Integral), + min_val=1, + max_val=n_samples) + try: + int(self.n_clusters) + except TypeError: + try: + r, c = self.n_clusters + int(r) + int(c) def _fit(self, X): + super().fit(X) normalized_data, row_diag, col_diag = _scale_normalize(X) n_sv = 1 + int(np.ceil(np.log2(self.n_clusters))) u, v = self._svd(normalized_data, n_sv, n_discard=1) @@ -508,6 +526,10 @@ def _check_parameters(self, n_sample): self.method, legal_methods ) ) + check_scalar(self.n_clusters, "n_clusters", + target_type=(numbers.Integral, (numbers.Integral, numbers.Integral)), + min_val=1, + max_val=n_samples) try: int(self.n_clusters) except TypeError: @@ -515,19 +537,13 @@ def _check_parameters(self, n_sample): r, c = self.n_clusters int(r) int(c) - except (ValueError, TypeError) as e: - raise ValueError( - "Incorrect parameter n_clusters has value:" - " {}. It should either be a single integer" - " or an iterable with two integers:" - " (n_row_clusters, n_column_clusters)" - ) from e check_scalar(self.n_components, "n_components", target_type=numbers.Integral, min_val=1) check_scalar(self.n_best, "n_best", target_type=numbers.Integral, min_val=1, max_val=self.n_components) def _fit(self, X): + super().fit(X) n_sv = self.n_components if self.method == "bistochastic": normalized_data = _bistochastic_normalize(X) From 682e80a78a9c797eb5130051ea0b2b85a708d0c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 02:18:01 +0300 Subject: [PATCH 07/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 3ff21bcae24cf..bca0068bbebca 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -527,7 +527,8 @@ def _check_parameters(self, n_sample): ) ) check_scalar(self.n_clusters, "n_clusters", - target_type=(numbers.Integral, (numbers.Integral, numbers.Integral)), + target_type=(numbers.Integral, + (numbers.Integral, numbers.Integral)), min_val=1, max_val=n_samples) try: From 2aa25fa060a6d44cf2aa76facfb035511444586a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 02:23:50 +0300 Subject: [PATCH 08/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index bca0068bbebca..cb184177f002c 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -527,8 +527,8 @@ def _check_parameters(self, n_sample): ) ) check_scalar(self.n_clusters, "n_clusters", - target_type=(numbers.Integral, - (numbers.Integral, numbers.Integral)), + target_type=(numbers.Integral, + (numbers.Integral, numbers.Integral)), min_val=1, max_val=n_samples) try: From 2ed7cc7cd07d5064adc485108c765e83faaec2d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 02:39:06 +0300 Subject: [PATCH 09/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index cb184177f002c..9f7dd9556089d 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -528,7 +528,7 @@ def _check_parameters(self, n_sample): ) check_scalar(self.n_clusters, "n_clusters", target_type=(numbers.Integral, - (numbers.Integral, numbers.Integral)), + (numbers.Integral, numbers.Integral)), min_val=1, max_val=n_samples) try: From 1dc369aaadcdbc1abd1c43070ce78a5f1fdf56d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 02:46:13 +0300 Subject: [PATCH 10/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 9f7dd9556089d..562a188cd05f0 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -351,7 +351,7 @@ def _check_parameters(self, n_sample): r, c = self.n_clusters int(r) int(c) - + def _fit(self, X): super().fit(X) normalized_data, row_diag, col_diag = _scale_normalize(X) @@ -528,9 +528,9 @@ def _check_parameters(self, n_sample): ) check_scalar(self.n_clusters, "n_clusters", target_type=(numbers.Integral, - (numbers.Integral, numbers.Integral)), - min_val=1, - max_val=n_samples) + (numbers.Integral, + numbers.Integral)), + min_val=1, max_val=n_samples) try: int(self.n_clusters) except TypeError: From 0674cff609ce2cf7f4d951368fb783dd9f36b2fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 02:49:01 +0300 Subject: [PATCH 11/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 562a188cd05f0..9db5e3779033a 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -330,7 +330,7 @@ def __init__( super().__init__( n_clusters, svd_method, n_svd_vecs, mini_batch, init, n_init, random_state ) - + def _check_parameters(self, n_sample): super()._check_parameters(n_sample) legal_methods = ('randomized', 'arpack') @@ -351,7 +351,7 @@ def _check_parameters(self, n_sample): r, c = self.n_clusters int(r) int(c) - + def _fit(self, X): super().fit(X) normalized_data, row_diag, col_diag = _scale_normalize(X) From f083fa58df3b3ac33e419181ed98053ee742b1f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 02:50:37 +0300 Subject: [PATCH 12/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 9db5e3779033a..01051fd6183ef 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -351,7 +351,7 @@ def _check_parameters(self, n_sample): r, c = self.n_clusters int(r) int(c) - + def _fit(self, X): super().fit(X) normalized_data, row_diag, col_diag = _scale_normalize(X) From 7b2c26f238fd04f743446ff15a604eed279ec3e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 03:16:39 +0300 Subject: [PATCH 13/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 01051fd6183ef..665f95db4b0d0 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -353,7 +353,6 @@ def _check_parameters(self, n_sample): int(c) def _fit(self, X): - super().fit(X) normalized_data, row_diag, col_diag = _scale_normalize(X) n_sv = 1 + int(np.ceil(np.log2(self.n_clusters))) u, v = self._svd(normalized_data, n_sv, n_discard=1) @@ -544,7 +543,6 @@ def _check_parameters(self, n_sample): min_val=1, max_val=self.n_components) def _fit(self, X): - super().fit(X) n_sv = self.n_components if self.method == "bistochastic": normalized_data = _bistochastic_normalize(X) From 6a7da7480770fbf8ad8fd4e28939597b8b33c5b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 03:27:31 +0300 Subject: [PATCH 14/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 665f95db4b0d0..80cabb774115b 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -347,10 +347,9 @@ def _check_parameters(self, n_sample): try: int(self.n_clusters) except TypeError: - try: - r, c = self.n_clusters - int(r) - int(c) + r, c = self.n_clusters + int(r) + int(c) def _fit(self, X): normalized_data, row_diag, col_diag = _scale_normalize(X) @@ -533,10 +532,9 @@ def _check_parameters(self, n_sample): try: int(self.n_clusters) except TypeError: - try: - r, c = self.n_clusters - int(r) - int(c) + r, c = self.n_clusters + int(r) + int(c) check_scalar(self.n_components, "n_components", target_type=numbers.Integral, min_val=1) check_scalar(self.n_best, "n_best", target_type=numbers.Integral, From 93fd2f32f90e4b400d060137638d182e523db1f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 03:34:34 +0300 Subject: [PATCH 15/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 80cabb774115b..93694b693e6ec 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -104,7 +104,7 @@ def __init__( self.n_init = n_init self.random_state = random_state - def _check_parameters(self, n_samples): + def _check_parameters(self): legal_svd_methods = ("randomized", "arpack") if self.svd_method not in legal_svd_methods: raise ValueError( @@ -331,8 +331,8 @@ def __init__( n_clusters, svd_method, n_svd_vecs, mini_batch, init, n_init, random_state ) - def _check_parameters(self, n_sample): - super()._check_parameters(n_sample) + def _check_parameters(self, n_samples): + super()._check_parameters(n_samples) legal_methods = ('randomized', 'arpack') if self.method not in legal_methods: raise ValueError( @@ -515,8 +515,8 @@ def __init__( self.n_components = n_components self.n_best = n_best - def _check_parameters(self, n_sample): - super()._check_parameters(n_sample) + def _check_parameters(self, n_samples): + super()._check_parameters() legal_methods = ("bistochastic", "scale", "log") if self.method not in legal_methods: raise ValueError( From 4944b67a1ea25ec8934fafa3c4bab0163e3cd517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 03:56:19 +0300 Subject: [PATCH 16/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 93694b693e6ec..b524a9d54c284 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -332,7 +332,7 @@ def __init__( ) def _check_parameters(self, n_samples): - super()._check_parameters(n_samples) + super()._check_parameters() legal_methods = ('randomized', 'arpack') if self.method not in legal_methods: raise ValueError( From 15dbaa1a7fe699b709560593f31153ffc5984440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 12:03:41 +0300 Subject: [PATCH 17/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index b524a9d54c284..626f544f3966d 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -113,6 +113,8 @@ def _check_parameters(self): ) ) check_scalar(self.n_init, "n_init", target_type=numbers.Integral, min_val=1) + if self.n_jobs is not None: + check_scalar(self.n_jobs, "n_jobs", numbers.Integral) def fit(self, X, y=None): """Create a biclustering for X. @@ -334,10 +336,10 @@ def __init__( def _check_parameters(self, n_samples): super()._check_parameters() legal_methods = ('randomized', 'arpack') - if self.method not in legal_methods: + if self.svd_method not in legal_methods: raise ValueError( "Unknown method: '{0}'. method must be one of {1}.".format( - self.method, legal_methods + self.svd_method, legal_methods ) ) check_scalar(self.n_clusters, "n_clusters", From fba86a801f99a41125e5712ae5e33fc386288d19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 14:53:34 +0300 Subject: [PATCH 18/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 626f544f3966d..b88b5ee2b9064 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -113,7 +113,7 @@ def _check_parameters(self): ) ) check_scalar(self.n_init, "n_init", target_type=numbers.Integral, min_val=1) - if self.n_jobs is not None: + if hasattr(self, 'n_jobs') and self.n_jobs is not None: check_scalar(self.n_jobs, "n_jobs", numbers.Integral) def fit(self, X, y=None): From e7e75c75e9381190267011a6f800bc4e45f29a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 15:32:40 +0300 Subject: [PATCH 19/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index b88b5ee2b9064..a4d17b05d4324 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -527,9 +527,7 @@ def _check_parameters(self, n_samples): ) ) check_scalar(self.n_clusters, "n_clusters", - target_type=(numbers.Integral, - (numbers.Integral, - numbers.Integral)), + target_type=(numbers.Integral, tuple), min_val=1, max_val=n_samples) try: int(self.n_clusters) From dbb7f61fffeadc4b2cbb72b0da2f39ad00fddd4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 17:24:36 +0300 Subject: [PATCH 20/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index a4d17b05d4324..d49623fc301cf 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -532,9 +532,17 @@ def _check_parameters(self, n_samples): try: int(self.n_clusters) except TypeError: - r, c = self.n_clusters - int(r) - int(c) + try: + r, c = self.n_clusters + int(r) + int(c) + except (ValueError, TypeError) as e: + raise ValueError( + "Incorrect parameter n_clusters has value:" + " {}. It should either be a single integer" + " or an iterable with two integers:" + " (n_row_clusters, n_column_clusters)" + ) from e check_scalar(self.n_components, "n_components", target_type=numbers.Integral, min_val=1) check_scalar(self.n_best, "n_best", target_type=numbers.Integral, From 1a59b6b52cdcbb06254788d80ef74942990d4218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 20:32:49 +0300 Subject: [PATCH 21/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index d49623fc301cf..f32a956739729 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -346,12 +346,6 @@ def _check_parameters(self, n_samples): target_type=(numbers.Integral), min_val=1, max_val=n_samples) - try: - int(self.n_clusters) - except TypeError: - r, c = self.n_clusters - int(r) - int(c) def _fit(self, X): normalized_data, row_diag, col_diag = _scale_normalize(X) @@ -526,22 +520,23 @@ def _check_parameters(self, n_samples): self.method, legal_methods ) ) - check_scalar(self.n_clusters, "n_clusters", - target_type=(numbers.Integral, tuple), - min_val=1, max_val=n_samples) try: - int(self.n_clusters) - except TypeError: + check_scalar(self.n_components, "n_components", target_type=numbers.Integral, + min_val=1) + except (ValueError, TypeError): try: - r, c = self.n_clusters - int(r) - int(c) + check_scalar(self.n_components[0], "n_row_clusters", target_type=numbers.Integral, + min_val=1) + check_scalar(self.n_components[1], "n_column_clusters", target_type=numbers.Integral, + min_val=1) except (ValueError, TypeError) as e: raise ValueError( "Incorrect parameter n_clusters has value:" " {}. It should either be a single integer" " or an iterable with two integers:" " (n_row_clusters, n_column_clusters)" + " And the values are should be in the" + " range: (1, n_samples)" ) from e check_scalar(self.n_components, "n_components", target_type=numbers.Integral, min_val=1) From d2c6695ee8195cf559cbcf35d99727bc3b3701cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Thu, 16 Sep 2021 20:37:17 +0300 Subject: [PATCH 22/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index f32a956739729..f621570508330 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -521,14 +521,14 @@ def _check_parameters(self, n_samples): ) ) try: - check_scalar(self.n_components, "n_components", target_type=numbers.Integral, - min_val=1) + check_scalar(self.n_clusters, "n_clusters", + target_type=numbers.Integral, min_val=1) except (ValueError, TypeError): try: - check_scalar(self.n_components[0], "n_row_clusters", target_type=numbers.Integral, - min_val=1) - check_scalar(self.n_components[1], "n_column_clusters", target_type=numbers.Integral, - min_val=1) + check_scalar(self.n_clusters[0], "n_row_clusters", + target_type=numbers.Integral, min_val=1) + check_scalar(self.n_clusters[1], "n_column_clusters", + target_type=numbers.Integral, min_val=1) except (ValueError, TypeError) as e: raise ValueError( "Incorrect parameter n_clusters has value:" From e878db618d1f2b8d62b48ac638798e66bccfd031 Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Sat, 2 Oct 2021 11:49:36 +0300 Subject: [PATCH 23/41] some change in spelling --- sklearn/cluster/_bicluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index f621570508330..dceeb0e4f63c2 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -343,7 +343,7 @@ def _check_parameters(self, n_samples): ) ) check_scalar(self.n_clusters, "n_clusters", - target_type=(numbers.Integral), + target_type=numbers.Integral, min_val=1, max_val=n_samples) From 54b0cf64a7b98920f81250f6cfa6c5adffacdd42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Sat, 2 Oct 2021 18:05:21 +0300 Subject: [PATCH 24/41] Update sklearn/cluster/_bicluster.py super()._check_parameters is already checking svd_method so no need to this block of code Co-authored-by: Thomas J. Fan --- sklearn/cluster/_bicluster.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index dceeb0e4f63c2..b936f0c1dcbd5 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -335,13 +335,6 @@ def __init__( def _check_parameters(self, n_samples): super()._check_parameters() - legal_methods = ('randomized', 'arpack') - if self.svd_method not in legal_methods: - raise ValueError( - "Unknown method: '{0}'. method must be one of {1}.".format( - self.svd_method, legal_methods - ) - ) check_scalar(self.n_clusters, "n_clusters", target_type=numbers.Integral, min_val=1, From 59ecd9a881b1b8cd4e5ea0476c6c987a82dac6cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Sat, 2 Oct 2021 18:38:29 +0300 Subject: [PATCH 25/41] Update _bicluster.py --- sklearn/cluster/_bicluster.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index b936f0c1dcbd5..a1d3e1e8d4e6a 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -104,7 +104,7 @@ def __init__( self.n_init = n_init self.random_state = random_state - def _check_parameters(self): + def _check_parameters(self, n_samples): legal_svd_methods = ("randomized", "arpack") if self.svd_method not in legal_svd_methods: raise ValueError( @@ -334,7 +334,7 @@ def __init__( ) def _check_parameters(self, n_samples): - super()._check_parameters() + super()._check_parameters(n_samples) check_scalar(self.n_clusters, "n_clusters", target_type=numbers.Integral, min_val=1, @@ -505,7 +505,7 @@ def __init__( self.n_best = n_best def _check_parameters(self, n_samples): - super()._check_parameters() + super()._check_parameters(n_samples) legal_methods = ("bistochastic", "scale", "log") if self.method not in legal_methods: raise ValueError( @@ -515,13 +515,13 @@ def _check_parameters(self, n_samples): ) try: check_scalar(self.n_clusters, "n_clusters", - target_type=numbers.Integral, min_val=1) + target_type=numbers.Integral, min_val=1, max_val=n_samples) except (ValueError, TypeError): try: check_scalar(self.n_clusters[0], "n_row_clusters", - target_type=numbers.Integral, min_val=1) + target_type=numbers.Integral, min_val=1, max_val=n_samples) check_scalar(self.n_clusters[1], "n_column_clusters", - target_type=numbers.Integral, min_val=1) + target_type=numbers.Integral, min_val=1, max_val=n_samples) except (ValueError, TypeError) as e: raise ValueError( "Incorrect parameter n_clusters has value:" From 95a458dad6c3a4170236dada20e0e9251c1ad832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= <73655475+creatornadiran@users.noreply.github.com> Date: Tue, 5 Oct 2021 00:52:09 +0300 Subject: [PATCH 26/41] Update sklearn/cluster/_bicluster.py Co-authored-by: Thomas J. Fan --- sklearn/cluster/_bicluster.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index a1d3e1e8d4e6a..5c1b2a67e742a 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -113,8 +113,6 @@ def _check_parameters(self, n_samples): ) ) check_scalar(self.n_init, "n_init", target_type=numbers.Integral, min_val=1) - if hasattr(self, 'n_jobs') and self.n_jobs is not None: - check_scalar(self.n_jobs, "n_jobs", numbers.Integral) def fit(self, X, y=None): """Create a biclustering for X. From c5937fe93e41bc3da8ed917d13c5138c4667dba1 Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Sat, 30 Oct 2021 01:03:04 +0300 Subject: [PATCH 27/41] runned black --- sklearn/cluster/_bicluster.py | 52 +++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 5c1b2a67e742a..bb880e5614113 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -333,10 +333,13 @@ def __init__( def _check_parameters(self, n_samples): super()._check_parameters(n_samples) - check_scalar(self.n_clusters, "n_clusters", - target_type=numbers.Integral, - min_val=1, - max_val=n_samples) + check_scalar( + self.n_clusters, + "n_clusters", + target_type=numbers.Integral, + min_val=1, + max_val=n_samples, + ) def _fit(self, X): normalized_data, row_diag, col_diag = _scale_normalize(X) @@ -512,14 +515,29 @@ def _check_parameters(self, n_samples): ) ) try: - check_scalar(self.n_clusters, "n_clusters", - target_type=numbers.Integral, min_val=1, max_val=n_samples) + check_scalar( + self.n_clusters, + "n_clusters", + target_type=numbers.Integral, + min_val=1, + max_val=n_samples, + ) except (ValueError, TypeError): try: - check_scalar(self.n_clusters[0], "n_row_clusters", - target_type=numbers.Integral, min_val=1, max_val=n_samples) - check_scalar(self.n_clusters[1], "n_column_clusters", - target_type=numbers.Integral, min_val=1, max_val=n_samples) + check_scalar( + self.n_clusters[0], + "n_row_clusters", + target_type=numbers.Integral, + min_val=1, + max_val=n_samples, + ) + check_scalar( + self.n_clusters[1], + "n_column_clusters", + target_type=numbers.Integral, + min_val=1, + max_val=n_samples, + ) except (ValueError, TypeError) as e: raise ValueError( "Incorrect parameter n_clusters has value:" @@ -529,10 +547,16 @@ def _check_parameters(self, n_samples): " And the values are should be in the" " range: (1, n_samples)" ) from e - check_scalar(self.n_components, "n_components", target_type=numbers.Integral, - min_val=1) - check_scalar(self.n_best, "n_best", target_type=numbers.Integral, - min_val=1, max_val=self.n_components) + check_scalar( + self.n_components, "n_components", target_type=numbers.Integral, min_val=1 + ) + check_scalar( + self.n_best, + "n_best", + target_type=numbers.Integral, + min_val=1, + max_val=self.n_components, + ) def _fit(self, X): n_sv = self.n_components From 788675a04234afa65481a348c2eef436548638a2 Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Sat, 30 Oct 2021 01:58:06 +0300 Subject: [PATCH 28/41] necessary changes --- sklearn/cluster/_bicluster.py | 7 ++++--- sklearn/cluster/tests/test_bicluster.py | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index bb880e5614113..83a44a371b9ef 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -524,15 +524,16 @@ def _check_parameters(self, n_samples): ) except (ValueError, TypeError): try: + n_row_clusters, n_column_clusters = self.n_clusters check_scalar( - self.n_clusters[0], + n_row_clusters, "n_row_clusters", target_type=numbers.Integral, min_val=1, max_val=n_samples, ) check_scalar( - self.n_clusters[1], + n_column_clusters, "n_column_clusters", target_type=numbers.Integral, min_val=1, @@ -541,7 +542,7 @@ def _check_parameters(self, n_samples): except (ValueError, TypeError) as e: raise ValueError( "Incorrect parameter n_clusters has value:" - " {}. It should either be a single integer" + f" {self.n_clusters}. It should either be a single integer" " or an iterable with two integers:" " (n_row_clusters, n_column_clusters)" " And the values are should be in the" diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index ba6d91a537143..f89f04890917d 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -210,12 +210,16 @@ def test_perfect_checkerboard(): @pytest.mark.parametrize( "args", [ + {"n_init": 0}, + {"n_init": "abc"}, {"n_clusters": (3, 3, 3)}, {"n_clusters": "abc"}, {"n_clusters": (3, "abc")}, {"method": "unknown"}, {"n_components": 0}, + {"n_components": "abc"}, {"n_best": 0}, + {"n_best": "abc"}, {"svd_method": "unknown"}, {"n_components": 3, "n_best": 4}, ], From 6ea505b7ef290d01129e180c7fb007ddd757fde9 Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Sat, 30 Oct 2021 02:38:49 +0300 Subject: [PATCH 29/41] test fixed --- sklearn/cluster/tests/test_bicluster.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index f89f04890917d..ecbf75b601bb9 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -211,15 +211,12 @@ def test_perfect_checkerboard(): "args", [ {"n_init": 0}, - {"n_init": "abc"}, {"n_clusters": (3, 3, 3)}, {"n_clusters": "abc"}, {"n_clusters": (3, "abc")}, {"method": "unknown"}, {"n_components": 0}, - {"n_components": "abc"}, {"n_best": 0}, - {"n_best": "abc"}, {"svd_method": "unknown"}, {"n_components": 3, "n_best": 4}, ], From bf2d6d3743401e4b1dda61b508da0f220ebed0c9 Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Sat, 30 Oct 2021 21:22:25 +0300 Subject: [PATCH 30/41] bicluster_test updated --- sklearn/cluster/tests/test_bicluster.py | 28 +++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index ecbf75b601bb9..fb09af549f729 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -208,12 +208,11 @@ def test_perfect_checkerboard(): @pytest.mark.parametrize( - "args", + "args1", [ {"n_init": 0}, {"n_clusters": (3, 3, 3)}, - {"n_clusters": "abc"}, - {"n_clusters": (3, "abc")}, + {"n_clusters": (6, 6)}, {"method": "unknown"}, {"n_components": 0}, {"n_best": 0}, @@ -221,14 +220,31 @@ def test_perfect_checkerboard(): {"n_components": 3, "n_best": 4}, ], ) -def test_errors(args): +def test_value_errors(args1): data = np.arange(25).reshape((5, 5)) - - model = SpectralBiclustering(**args) + model = SpectralBiclustering(**args1) with pytest.raises(ValueError): model.fit(data) +@pytest.mark.parametrize( + "args2", + [ + {"n_init": "abc"}, + {"n_clusters": "abc"}, + {"n_clusters": (3, "abc")}, + {"n_clusters": ("abc", 3)}, + {"n_components": "abc"}, + {"n_best": "abc"}, + ], +) +def test_type_errors(args2): + data = np.arange(25).reshape((5, 5)) + model = SpectralBiclustering(**args2) + with pytest.raises(TypeError): + model.fit(data) + + def test_wrong_shape(): model = SpectralBiclustering() data = np.arange(27).reshape((3, 3, 3)) From d77d8edbd47da275b38159a70b88f673047f8954 Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Sat, 30 Oct 2021 21:43:39 +0300 Subject: [PATCH 31/41] test_bicluster fixed --- sklearn/cluster/tests/test_bicluster.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index fb09af549f729..1374a18e0b1b4 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -213,6 +213,9 @@ def test_perfect_checkerboard(): {"n_init": 0}, {"n_clusters": (3, 3, 3)}, {"n_clusters": (6, 6)}, + {"n_clusters": "abc"}, + {"n_clusters": (3, "abc")}, + {"n_clusters": ("abc", 3)}, {"method": "unknown"}, {"n_components": 0}, {"n_best": 0}, @@ -231,9 +234,6 @@ def test_value_errors(args1): "args2", [ {"n_init": "abc"}, - {"n_clusters": "abc"}, - {"n_clusters": (3, "abc")}, - {"n_clusters": ("abc", 3)}, {"n_components": "abc"}, {"n_best": "abc"}, ], From 87fe753230f783d2470d04e7e4dbca60301b7182 Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Thu, 11 Nov 2021 14:23:25 +0300 Subject: [PATCH 32/41] test_bicluster.py fixed --- sklearn/cluster/tests/test_bicluster.py | 117 ++++++++++++++++++------ 1 file changed, 88 insertions(+), 29 deletions(-) diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index 1374a18e0b1b4..cdb182ab8ad0c 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -208,47 +208,106 @@ def test_perfect_checkerboard(): @pytest.mark.parametrize( - "args1", + "params, type_err, err_msg", [ - {"n_init": 0}, - {"n_clusters": (3, 3, 3)}, - {"n_clusters": (6, 6)}, - {"n_clusters": "abc"}, - {"n_clusters": (3, "abc")}, - {"n_clusters": ("abc", 3)}, - {"method": "unknown"}, - {"n_components": 0}, - {"n_best": 0}, - {"svd_method": "unknown"}, - {"n_components": 3, "n_best": 4}, + ({"n_init": 0}, ValueError, "n_init == 0, must be >= 1."), + ({"n_init": 1.5}, TypeError, "n_init must be an instance of"), + ( + {"n_clusters": (3, 3, 3)}, + ValueError, + r"Incorrect parameter n_clusters has value: \(3, 3, 3\)", + ), + ( + {"n_clusters": (6, 6)}, + ValueError, + r"Incorrect parameter n_clusters has value: \(6, 6\)", + ), + ( + {"n_clusters": "abc"}, + ValueError, + "Incorrect parameter n_clusters has value: abc", + ), + ( + {"n_clusters": (3, "abc")}, + ValueError, + r"Incorrect parameter n_clusters has value: \(3, 'abc'\)", + ), + ( + {"n_clusters": ("abc", 3)}, + ValueError, + r"Incorrect parameter n_clusters has value: \('abc', 3\)", + ), + ( + {"n_clusters": 4, "n_samples": 3}, + ValueError, + "n_clusters == 4, must be <= 3.", + )({"svd_method": "unknown"}, ValueError, "Unknown SVD method: 'unknown'"), ], ) -def test_value_errors(args1): +def test_spectalcoclustering_parameter_validation(params, type_err, err_msg): + """Check parameters validation in `SpectralBiClustering`""" data = np.arange(25).reshape((5, 5)) - model = SpectralBiclustering(**args1) - with pytest.raises(ValueError): + model = SpectralCoclustering(**params) + with pytest.raises(type_err, match=err_msg): model.fit(data) @pytest.mark.parametrize( - "args2", + "params, type_err, err_msg", [ - {"n_init": "abc"}, - {"n_components": "abc"}, - {"n_best": "abc"}, + ({"n_init": 0}, ValueError, "n_init == 0, must be >= 1."), + ({"n_init": 1.5}, TypeError, "n_init must be an instance of integer"), + ( + {"n_clusters": (3, 3, 3)}, + ValueError, + r"Incorrect parameter n_clusters has value: \(3, 3, 3\)", + ), + ( + {"n_clusters": (2, 6), "n_samples": 3}, + ValueError, + r"n_clusters can not bigger than n_samples: n_clusters[1] == 6, must be" + r" <= 3", + ), + ( + {"n_clusters": (6, 2), "n_samples": 3}, + ValueError, + r"n_clusters can not bigger than n_samples: n_clusters[0] == 6, must be" + r" <= 3.", + ), + ( + {"n_clusters": "abc"}, + ValueError, + "Incorrect parameter n_clusters has value: abc", + ), + ( + {"n_clusters": (3, "abc")}, + ValueError, + r"Incorrect parameter n_clusters has value: \(3, 'abc'\)", + ), + ( + {"n_clusters": ("abc", 3)}, + ValueError, + r"Incorrect parameter n_clusters has value: \('abc', 3\)", + ), + ({"method": "unknown"}, ValueError, "Unknown method: 'unknown'"), + ({"n_components": 0}, ValueError, "n_components == 0, must be >= 1."), + ({"n_components": 1.5}, TypeError, "n_components must be an instance of"), + ({"n_components": 3, "n_best": 4}, ValueError, "n_best == 4, must be <= 3."), + ({"n_best": 0}, ValueError, "n_best == 0, must be >= 1."), + ({"n_best": 1.5}, TypeError, "n_best must be an instance of"), + ({"svd_method": "unknown"}, ValueError, "Unknown SVD method: 'unknown'"), + ( + {"n_clusters": 4, "n_samples": 3}, + ValueError, + "n_clusters == 4, must be <= 3.", + ), ], ) -def test_type_errors(args2): +def test_spectalbiclustering_parameter_validation(params, type_err, err_msg): + """Check parameters validation in `SpectralBiClustering`""" data = np.arange(25).reshape((5, 5)) - model = SpectralBiclustering(**args2) - with pytest.raises(TypeError): - model.fit(data) - - -def test_wrong_shape(): - model = SpectralBiclustering() - data = np.arange(27).reshape((3, 3, 3)) - with pytest.raises(ValueError): + model = SpectralBiclustering(**params) + with pytest.raises(type_err, match=err_msg): model.fit(data) From 42de356264bf7968bc382d93e41bdd73ae86c62a Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Thu, 11 Nov 2021 14:32:43 +0300 Subject: [PATCH 33/41] test_bicluster refixed --- sklearn/cluster/tests/test_bicluster.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index cdb182ab8ad0c..4cdcbbe6522f9 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -240,8 +240,9 @@ def test_perfect_checkerboard(): ( {"n_clusters": 4, "n_samples": 3}, ValueError, - "n_clusters == 4, must be <= 3.", - )({"svd_method": "unknown"}, ValueError, "Unknown SVD method: 'unknown'"), + "n_clusters can not bigger than n_samples: n_clusters == 4, must be <= 3.", + ), + ({"svd_method": "unknown"}, ValueError, "Unknown SVD method: 'unknown'"), ], ) def test_spectalcoclustering_parameter_validation(params, type_err, err_msg): @@ -261,6 +262,7 @@ def test_spectalcoclustering_parameter_validation(params, type_err, err_msg): {"n_clusters": (3, 3, 3)}, ValueError, r"Incorrect parameter n_clusters has value: \(3, 3, 3\)", + r"Incorrect parameter n_clusters has value: \(3, 3, 3\)", ), ( {"n_clusters": (2, 6), "n_samples": 3}, From 8615430287a08be4637d93b3b2ef997f46b69424 Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Thu, 11 Nov 2021 14:48:05 +0300 Subject: [PATCH 34/41] test_bicluster --- sklearn/cluster/tests/test_bicluster.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index 4cdcbbe6522f9..4c34acc3d6423 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -260,8 +260,6 @@ def test_spectalcoclustering_parameter_validation(params, type_err, err_msg): ({"n_init": 1.5}, TypeError, "n_init must be an instance of integer"), ( {"n_clusters": (3, 3, 3)}, - ValueError, - r"Incorrect parameter n_clusters has value: \(3, 3, 3\)", r"Incorrect parameter n_clusters has value: \(3, 3, 3\)", ), ( From 2cf26cc1a2ecc1ecfb850844ee2e4801333aaa89 Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Thu, 11 Nov 2021 15:14:01 +0300 Subject: [PATCH 35/41] tests/test_bicluster fixed --- sklearn/cluster/tests/test_bicluster.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index 4c34acc3d6423..539cae3c44f06 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -260,6 +260,7 @@ def test_spectalcoclustering_parameter_validation(params, type_err, err_msg): ({"n_init": 1.5}, TypeError, "n_init must be an instance of integer"), ( {"n_clusters": (3, 3, 3)}, + ValueError, r"Incorrect parameter n_clusters has value: \(3, 3, 3\)", ), ( From feb581aa9d9fddd41ab26b5f9459807f2dba2acb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nadirhan=20=C5=9Eahin?= Date: Sun, 30 Jan 2022 00:31:38 +0300 Subject: [PATCH 36/41] Update test_bicluster.py --- sklearn/cluster/tests/test_bicluster.py | 32 +------------------------ 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index 539cae3c44f06..9824feaa8e792 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -212,36 +212,11 @@ def test_perfect_checkerboard(): [ ({"n_init": 0}, ValueError, "n_init == 0, must be >= 1."), ({"n_init": 1.5}, TypeError, "n_init must be an instance of"), - ( - {"n_clusters": (3, 3, 3)}, - ValueError, - r"Incorrect parameter n_clusters has value: \(3, 3, 3\)", - ), - ( - {"n_clusters": (6, 6)}, - ValueError, - r"Incorrect parameter n_clusters has value: \(6, 6\)", - ), ( {"n_clusters": "abc"}, - ValueError, + TypeError, "Incorrect parameter n_clusters has value: abc", ), - ( - {"n_clusters": (3, "abc")}, - ValueError, - r"Incorrect parameter n_clusters has value: \(3, 'abc'\)", - ), - ( - {"n_clusters": ("abc", 3)}, - ValueError, - r"Incorrect parameter n_clusters has value: \('abc', 3\)", - ), - ( - {"n_clusters": 4, "n_samples": 3}, - ValueError, - "n_clusters can not bigger than n_samples: n_clusters == 4, must be <= 3.", - ), ({"svd_method": "unknown"}, ValueError, "Unknown SVD method: 'unknown'"), ], ) @@ -297,11 +272,6 @@ def test_spectalcoclustering_parameter_validation(params, type_err, err_msg): ({"n_best": 0}, ValueError, "n_best == 0, must be >= 1."), ({"n_best": 1.5}, TypeError, "n_best must be an instance of"), ({"svd_method": "unknown"}, ValueError, "Unknown SVD method: 'unknown'"), - ( - {"n_clusters": 4, "n_samples": 3}, - ValueError, - "n_clusters == 4, must be <= 3.", - ), ], ) def test_spectalbiclustering_parameter_validation(params, type_err, err_msg): From f70c9efaa8cc3cae6cba079ab23ffd530fd782ea Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Sun, 30 Jan 2022 01:13:41 +0300 Subject: [PATCH 37/41] rebase and changes --- sklearn/cluster/_bicluster.py | 2 +- sklearn/cluster/tests/test_bicluster.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index 83a44a371b9ef..e3b69719631e8 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -624,4 +624,4 @@ def _project_and_cluster(self, data, vectors, n_clusters): """Project ``data`` to ``vectors`` and cluster the result.""" projected = safe_sparse_dot(data, vectors) _, labels = self._k_means(projected, n_clusters) - return labels + return labels \ No newline at end of file diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index 9824feaa8e792..36e668d8dca76 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -289,4 +289,4 @@ def test_n_features_in_(est): assert not hasattr(est, "n_features_in_") est.fit(X) - assert est.n_features_in_ == 3 + assert est.n_features_in_ == 3 \ No newline at end of file From 5b20cec4575c239904c09e772a1d0a8f162fee1f Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Sun, 30 Jan 2022 01:19:33 +0300 Subject: [PATCH 38/41] black --- sklearn/cluster/_bicluster.py | 2 +- sklearn/cluster/tests/test_bicluster.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index e3b69719631e8..83a44a371b9ef 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -624,4 +624,4 @@ def _project_and_cluster(self, data, vectors, n_clusters): """Project ``data`` to ``vectors`` and cluster the result.""" projected = safe_sparse_dot(data, vectors) _, labels = self._k_means(projected, n_clusters) - return labels \ No newline at end of file + return labels diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index 36e668d8dca76..9824feaa8e792 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -289,4 +289,4 @@ def test_n_features_in_(est): assert not hasattr(est, "n_features_in_") est.fit(X) - assert est.n_features_in_ == 3 \ No newline at end of file + assert est.n_features_in_ == 3 From 9569bfa98d7c09892dea5ac6570fd6b1cb349cf3 Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Sun, 30 Jan 2022 01:48:19 +0300 Subject: [PATCH 39/41] error fix --- sklearn/cluster/tests/test_bicluster.py | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index 9824feaa8e792..bd142cd401749 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -214,7 +214,7 @@ def test_perfect_checkerboard(): ({"n_init": 1.5}, TypeError, "n_init must be an instance of"), ( {"n_clusters": "abc"}, - TypeError, + ValueError, "Incorrect parameter n_clusters has value: abc", ), ({"svd_method": "unknown"}, ValueError, "Unknown SVD method: 'unknown'"), @@ -238,18 +238,6 @@ def test_spectalcoclustering_parameter_validation(params, type_err, err_msg): ValueError, r"Incorrect parameter n_clusters has value: \(3, 3, 3\)", ), - ( - {"n_clusters": (2, 6), "n_samples": 3}, - ValueError, - r"n_clusters can not bigger than n_samples: n_clusters[1] == 6, must be" - r" <= 3", - ), - ( - {"n_clusters": (6, 2), "n_samples": 3}, - ValueError, - r"n_clusters can not bigger than n_samples: n_clusters[0] == 6, must be" - r" <= 3.", - ), ( {"n_clusters": "abc"}, ValueError, From 0194654ad81747e24479be57bc7de40c6128bc52 Mon Sep 17 00:00:00 2001 From: Nadirhan Date: Sun, 30 Jan 2022 02:04:43 +0300 Subject: [PATCH 40/41] error fix 2 --- sklearn/cluster/tests/test_bicluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index bd142cd401749..f9ca62548a85d 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -214,7 +214,7 @@ def test_perfect_checkerboard(): ({"n_init": 1.5}, TypeError, "n_init must be an instance of"), ( {"n_clusters": "abc"}, - ValueError, + TypeError, "Incorrect parameter n_clusters has value: abc", ), ({"svd_method": "unknown"}, ValueError, "Unknown SVD method: 'unknown'"), From cda955d4b82f4722f6c9fc58ff2af569c8f56fd2 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Mon, 31 Jan 2022 10:54:24 +0100 Subject: [PATCH 41/41] fix regex to match --- sklearn/cluster/tests/test_bicluster.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sklearn/cluster/tests/test_bicluster.py b/sklearn/cluster/tests/test_bicluster.py index f9ca62548a85d..184fe3891804e 100644 --- a/sklearn/cluster/tests/test_bicluster.py +++ b/sklearn/cluster/tests/test_bicluster.py @@ -215,12 +215,12 @@ def test_perfect_checkerboard(): ( {"n_clusters": "abc"}, TypeError, - "Incorrect parameter n_clusters has value: abc", + "n_clusters must be an instance of", ), ({"svd_method": "unknown"}, ValueError, "Unknown SVD method: 'unknown'"), ], ) -def test_spectalcoclustering_parameter_validation(params, type_err, err_msg): +def test_spectralcoclustering_parameter_validation(params, type_err, err_msg): """Check parameters validation in `SpectralBiClustering`""" data = np.arange(25).reshape((5, 5)) model = SpectralCoclustering(**params) @@ -232,7 +232,7 @@ def test_spectalcoclustering_parameter_validation(params, type_err, err_msg): "params, type_err, err_msg", [ ({"n_init": 0}, ValueError, "n_init == 0, must be >= 1."), - ({"n_init": 1.5}, TypeError, "n_init must be an instance of integer"), + ({"n_init": 1.5}, TypeError, "n_init must be an instance of"), ( {"n_clusters": (3, 3, 3)}, ValueError, @@ -262,7 +262,7 @@ def test_spectalcoclustering_parameter_validation(params, type_err, err_msg): ({"svd_method": "unknown"}, ValueError, "Unknown SVD method: 'unknown'"), ], ) -def test_spectalbiclustering_parameter_validation(params, type_err, err_msg): +def test_spectralbiclustering_parameter_validation(params, type_err, err_msg): """Check parameters validation in `SpectralBiClustering`""" data = np.arange(25).reshape((5, 5)) model = SpectralBiclustering(**params)