From 8e2752a382f237024c1203f3f37c4badddb3acdd Mon Sep 17 00:00:00 2001 From: genvalen Date: Wed, 22 Sep 2021 22:34:47 -0400 Subject: [PATCH 01/19] add scalar fucntion to AdaBoostClassifier --- sklearn/ensemble/_weight_boosting.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sklearn/ensemble/_weight_boosting.py b/sklearn/ensemble/_weight_boosting.py index a47937880d91c..099ef590b68df 100644 --- a/sklearn/ensemble/_weight_boosting.py +++ b/sklearn/ensemble/_weight_boosting.py @@ -25,6 +25,7 @@ from abc import ABCMeta, abstractmethod +import numbers import numpy as np import warnings @@ -36,6 +37,7 @@ from ..tree import DecisionTreeClassifier, DecisionTreeRegressor from ..utils import check_random_state, _safe_indexing +from ..utils import check_scalar from ..utils.extmath import softmax from ..utils.extmath import stable_cumsum from ..metrics import accuracy_score, r2_score @@ -478,6 +480,19 @@ def fit(self, X, y, sample_weight=None): self : object Fitted estimator. """ + check_scalar( + self.n_estimators, + "n_estimators", + target_type=numbers.Integral, + min_val=, + max_val=, + + ) + + check_scalar( + self.learning_rate, + "learning_rate" + ) # Check that algorithm is supported if self.algorithm not in ("SAMME", "SAMME.R"): raise ValueError("algorithm %s is not supported" % self.algorithm) From 779f31fbc75690546f06c327b2799b7adea92f95 Mon Sep 17 00:00:00 2001 From: genvalen Date: Sun, 24 Oct 2021 01:13:13 -0400 Subject: [PATCH 02/19] Add scalar validation with `check_scalar` to AdaBoostClassifier --- sklearn/ensemble/_weight_boosting.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sklearn/ensemble/_weight_boosting.py b/sklearn/ensemble/_weight_boosting.py index 099ef590b68df..acc3d632f48cc 100644 --- a/sklearn/ensemble/_weight_boosting.py +++ b/sklearn/ensemble/_weight_boosting.py @@ -484,15 +484,15 @@ def fit(self, X, y, sample_weight=None): self.n_estimators, "n_estimators", target_type=numbers.Integral, - min_val=, - max_val=, - + min_val= 1 ) check_scalar( self.learning_rate, - "learning_rate" + "learning_rate", + min_val = 1 ) + # Check that algorithm is supported if self.algorithm not in ("SAMME", "SAMME.R"): raise ValueError("algorithm %s is not supported" % self.algorithm) From a1b6aed5baa5a0074383b1b0c38382b9ab086ba7 Mon Sep 17 00:00:00 2001 From: genvalen Date: Sun, 24 Oct 2021 01:33:29 -0400 Subject: [PATCH 03/19] Update `check_scalar` arguments --- sklearn/ensemble/_weight_boosting.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sklearn/ensemble/_weight_boosting.py b/sklearn/ensemble/_weight_boosting.py index acc3d632f48cc..8b3c5315d70c6 100644 --- a/sklearn/ensemble/_weight_boosting.py +++ b/sklearn/ensemble/_weight_boosting.py @@ -484,13 +484,16 @@ def fit(self, X, y, sample_weight=None): self.n_estimators, "n_estimators", target_type=numbers.Integral, - min_val= 1 + min_val=1, + include_boundaries="Left" ) check_scalar( self.learning_rate, "learning_rate", - min_val = 1 + target_type=numbers.Real, + min_val=1, + include_boundaries="Left" ) # Check that algorithm is supported From be87d0f39026a9486bfe745bf6187acf61cabbc0 Mon Sep 17 00:00:00 2001 From: genvalen Date: Mon, 25 Oct 2021 13:38:08 -0400 Subject: [PATCH 04/19] Update `check_scalar` arguments --- sklearn/ensemble/_weight_boosting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/ensemble/_weight_boosting.py b/sklearn/ensemble/_weight_boosting.py index 5ff74bfa9e203..cc0aedb6fb9a3 100644 --- a/sklearn/ensemble/_weight_boosting.py +++ b/sklearn/ensemble/_weight_boosting.py @@ -485,7 +485,7 @@ def fit(self, X, y, sample_weight=None): "n_estimators", target_type=numbers.Integral, min_val=1, - include_boundaries="Left" + include_boundaries="left" ) check_scalar( @@ -493,7 +493,7 @@ def fit(self, X, y, sample_weight=None): "learning_rate", target_type=numbers.Real, min_val=1, - include_boundaries="Left" + include_boundaries="left" ) # Check that algorithm is supported From 9129056a4c1b847e3d5c4feb287d09fdb2f03b4f Mon Sep 17 00:00:00 2001 From: genvalen Date: Mon, 25 Oct 2021 13:39:52 -0400 Subject: [PATCH 05/19] WIP: Add tests --- sklearn/ensemble/tests/test_weight_boosting.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sklearn/ensemble/tests/test_weight_boosting.py b/sklearn/ensemble/tests/test_weight_boosting.py index 159f83abf24c4..12e7316f86dd6 100755 --- a/sklearn/ensemble/tests/test_weight_boosting.py +++ b/sklearn/ensemble/tests/test_weight_boosting.py @@ -549,6 +549,20 @@ def test_adaboostregressor_sample_weight(): assert score_no_outlier == pytest.approx(score_with_weight) +@pytest.mark.parametrize( + "input, params, err_type, err_msg", + [ + (X, {"n_estimators": 0}, ValueError, "n_estimators == 0, must be >= 1"), + (X, {"learning_rate": 0}, ValueError, "learning_rate == 0, must be >= 1.0"), + (X, {"algorithm": "unknown"}, ValueError, "Algorithm must be 'SAMME' or 'SAMME.R'") + ], +) +def test_ada_boost_classifier_params_validation(input, params, err_type, err_msg): + """Check the parameters validation in `AdaBoostClassifier`.""" + with pytest.raises(err_type, match=err_msg): + AdaBoostClassifier(**params).fit(input) + + @pytest.mark.parametrize("algorithm", ["SAMME", "SAMME.R"]) def test_adaboost_consistent_predict(algorithm): # check that predict_proba and predict give consistent results From aaf08a8172cbb380ef57cc735e0be5e6c54f526e Mon Sep 17 00:00:00 2001 From: genvalen Date: Tue, 26 Oct 2021 00:50:22 -0400 Subject: [PATCH 06/19] Update ValueError message for algorithm validation --- sklearn/ensemble/_weight_boosting.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sklearn/ensemble/_weight_boosting.py b/sklearn/ensemble/_weight_boosting.py index cc0aedb6fb9a3..1ed52430d2bca 100644 --- a/sklearn/ensemble/_weight_boosting.py +++ b/sklearn/ensemble/_weight_boosting.py @@ -498,7 +498,9 @@ def fit(self, X, y, sample_weight=None): # Check that algorithm is supported if self.algorithm not in ("SAMME", "SAMME.R"): - raise ValueError("algorithm %s is not supported" % self.algorithm) + raise ValueError( + "Algorithm must be 'SAMME' or 'SAMME.R'. Got %s instead." + % self.algorithm) # Fit return super().fit(X, y, sample_weight) From 9ad182268ce2d48f4218c4e491123a28e60f0e50 Mon Sep 17 00:00:00 2001 From: genvalen Date: Tue, 26 Oct 2021 00:52:16 -0400 Subject: [PATCH 07/19] Update tests --- sklearn/ensemble/tests/test_weight_boosting.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sklearn/ensemble/tests/test_weight_boosting.py b/sklearn/ensemble/tests/test_weight_boosting.py index 12e7316f86dd6..cda6b2d602ff1 100755 --- a/sklearn/ensemble/tests/test_weight_boosting.py +++ b/sklearn/ensemble/tests/test_weight_boosting.py @@ -550,17 +550,17 @@ def test_adaboostregressor_sample_weight(): @pytest.mark.parametrize( - "input, params, err_type, err_msg", + "params, err_type, err_msg", [ - (X, {"n_estimators": 0}, ValueError, "n_estimators == 0, must be >= 1"), - (X, {"learning_rate": 0}, ValueError, "learning_rate == 0, must be >= 1.0"), - (X, {"algorithm": "unknown"}, ValueError, "Algorithm must be 'SAMME' or 'SAMME.R'") + ({"n_estimators": 0}, ValueError, "n_estimators == 0, must be >= 1"), + ({"learning_rate": 0}, ValueError, "learning_rate == 0, must be >= 1."), + ({"algorithm": "unknown"}, ValueError, "Algorithm must be 'SAMME' or 'SAMME.R'.") ], ) -def test_ada_boost_classifier_params_validation(input, params, err_type, err_msg): +def test_adaboost_classifier_params_validation(params, err_type, err_msg): """Check the parameters validation in `AdaBoostClassifier`.""" with pytest.raises(err_type, match=err_msg): - AdaBoostClassifier(**params).fit(input) + AdaBoostClassifier(**params).fit(X, y_class) # args are from toy sample @pytest.mark.parametrize("algorithm", ["SAMME", "SAMME.R"]) From e286ea886d5915f15d6bac8bf74144a2a04a315f Mon Sep 17 00:00:00 2001 From: genvalen Date: Tue, 26 Oct 2021 01:08:35 -0400 Subject: [PATCH 08/19] Fix linting error --- sklearn/ensemble/_weight_boosting.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sklearn/ensemble/_weight_boosting.py b/sklearn/ensemble/_weight_boosting.py index 1ed52430d2bca..19d55f05ea0fc 100644 --- a/sklearn/ensemble/_weight_boosting.py +++ b/sklearn/ensemble/_weight_boosting.py @@ -485,7 +485,7 @@ def fit(self, X, y, sample_weight=None): "n_estimators", target_type=numbers.Integral, min_val=1, - include_boundaries="left" + include_boundaries="left", ) check_scalar( @@ -493,14 +493,15 @@ def fit(self, X, y, sample_weight=None): "learning_rate", target_type=numbers.Real, min_val=1, - include_boundaries="left" + include_boundaries="left", ) # Check that algorithm is supported if self.algorithm not in ("SAMME", "SAMME.R"): raise ValueError( "Algorithm must be 'SAMME' or 'SAMME.R'. Got %s instead." - % self.algorithm) + % self.algorithm + ) # Fit return super().fit(X, y, sample_weight) From 89eac0ac5f017d06ccc7c6eb5b0b17c1354889b0 Mon Sep 17 00:00:00 2001 From: genvalen Date: Tue, 26 Oct 2021 01:13:40 -0400 Subject: [PATCH 09/19] Fix another linting error --- sklearn/ensemble/tests/test_weight_boosting.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sklearn/ensemble/tests/test_weight_boosting.py b/sklearn/ensemble/tests/test_weight_boosting.py index cda6b2d602ff1..2b3c9487d6612 100755 --- a/sklearn/ensemble/tests/test_weight_boosting.py +++ b/sklearn/ensemble/tests/test_weight_boosting.py @@ -554,13 +554,17 @@ def test_adaboostregressor_sample_weight(): [ ({"n_estimators": 0}, ValueError, "n_estimators == 0, must be >= 1"), ({"learning_rate": 0}, ValueError, "learning_rate == 0, must be >= 1."), - ({"algorithm": "unknown"}, ValueError, "Algorithm must be 'SAMME' or 'SAMME.R'.") + ( + {"algorithm": "unknown"}, + ValueError, + "Algorithm must be 'SAMME' or 'SAMME.R'.", + ), ], ) def test_adaboost_classifier_params_validation(params, err_type, err_msg): """Check the parameters validation in `AdaBoostClassifier`.""" with pytest.raises(err_type, match=err_msg): - AdaBoostClassifier(**params).fit(X, y_class) # args are from toy sample + AdaBoostClassifier(**params).fit(X, y_class) # args are from toy sample @pytest.mark.parametrize("algorithm", ["SAMME", "SAMME.R"]) From c80edffca97a29534e0c6f008e74b432cc0f0347 Mon Sep 17 00:00:00 2001 From: genvalen Date: Fri, 29 Oct 2021 12:09:40 -0400 Subject: [PATCH 10/19] Update sklearn/ensemble/_weight_boosting.py Co-authored-by: Thomas J. Fan --- sklearn/ensemble/_weight_boosting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/ensemble/_weight_boosting.py b/sklearn/ensemble/_weight_boosting.py index 19d55f05ea0fc..09b00f1ec49fd 100644 --- a/sklearn/ensemble/_weight_boosting.py +++ b/sklearn/ensemble/_weight_boosting.py @@ -493,7 +493,7 @@ def fit(self, X, y, sample_weight=None): "learning_rate", target_type=numbers.Real, min_val=1, - include_boundaries="left", + include_boundaries="neither", ) # Check that algorithm is supported From a580506f3e94c62a803ca030f33c7157325b0acc Mon Sep 17 00:00:00 2001 From: genvalen Date: Fri, 29 Oct 2021 12:09:50 -0400 Subject: [PATCH 11/19] Update sklearn/ensemble/_weight_boosting.py Co-authored-by: Thomas J. Fan --- sklearn/ensemble/_weight_boosting.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sklearn/ensemble/_weight_boosting.py b/sklearn/ensemble/_weight_boosting.py index 09b00f1ec49fd..e0e557d1ca4c8 100644 --- a/sklearn/ensemble/_weight_boosting.py +++ b/sklearn/ensemble/_weight_boosting.py @@ -499,8 +499,7 @@ def fit(self, X, y, sample_weight=None): # Check that algorithm is supported if self.algorithm not in ("SAMME", "SAMME.R"): raise ValueError( - "Algorithm must be 'SAMME' or 'SAMME.R'. Got %s instead." - % self.algorithm + f"Algorithm must be 'SAMME' or 'SAMME.R'. Got {self.algorithm} instead." ) # Fit From 00bd50e912fb5539ff234207efdc3fb8e31bebaa Mon Sep 17 00:00:00 2001 From: genvalen Date: Fri, 29 Oct 2021 12:16:03 -0400 Subject: [PATCH 12/19] Update sklearn/ensemble/_weight_boosting.py Co-authored-by: Thomas J. Fan --- sklearn/ensemble/_weight_boosting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/ensemble/_weight_boosting.py b/sklearn/ensemble/_weight_boosting.py index e0e557d1ca4c8..79cef976c705c 100644 --- a/sklearn/ensemble/_weight_boosting.py +++ b/sklearn/ensemble/_weight_boosting.py @@ -492,7 +492,7 @@ def fit(self, X, y, sample_weight=None): self.learning_rate, "learning_rate", target_type=numbers.Real, - min_val=1, + min_val=0, include_boundaries="neither", ) From 6e5cff99bf22562901ba034ffd46df6ecae3fc87 Mon Sep 17 00:00:00 2001 From: genvalen Date: Fri, 29 Oct 2021 14:54:20 -0400 Subject: [PATCH 13/19] Update tests: change learning_rate error message --- sklearn/ensemble/tests/test_weight_boosting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/ensemble/tests/test_weight_boosting.py b/sklearn/ensemble/tests/test_weight_boosting.py index 2b3c9487d6612..207180a1a76d4 100755 --- a/sklearn/ensemble/tests/test_weight_boosting.py +++ b/sklearn/ensemble/tests/test_weight_boosting.py @@ -553,7 +553,7 @@ def test_adaboostregressor_sample_weight(): "params, err_type, err_msg", [ ({"n_estimators": 0}, ValueError, "n_estimators == 0, must be >= 1"), - ({"learning_rate": 0}, ValueError, "learning_rate == 0, must be >= 1."), + ({"learning_rate": 0}, ValueError, "learning_rate == 0, must be > 0."), ( {"algorithm": "unknown"}, ValueError, From fc222ab4f9b00b80ef89b64e10c2d0135bf82e96 Mon Sep 17 00:00:00 2001 From: genvalen Date: Fri, 29 Oct 2021 15:07:03 -0400 Subject: [PATCH 14/19] Update tests: remove redundant tests, add new tests --- sklearn/ensemble/tests/test_weight_boosting.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/sklearn/ensemble/tests/test_weight_boosting.py b/sklearn/ensemble/tests/test_weight_boosting.py index 207180a1a76d4..5407793d0787e 100755 --- a/sklearn/ensemble/tests/test_weight_boosting.py +++ b/sklearn/ensemble/tests/test_weight_boosting.py @@ -273,12 +273,6 @@ def test_importances(): def test_error(): # Test that it gives proper exception on deficient input. - with pytest.raises(ValueError): - AdaBoostClassifier(learning_rate=-1).fit(X, y_class) - - with pytest.raises(ValueError): - AdaBoostClassifier(algorithm="foo").fit(X, y_class) - with pytest.raises(ValueError): AdaBoostClassifier().fit(X, y_class, sample_weight=np.asarray([-1])) @@ -552,8 +546,10 @@ def test_adaboostregressor_sample_weight(): @pytest.mark.parametrize( "params, err_type, err_msg", [ + ({"n_estimators": -1}, ValueError, "n_estimators == 0, must be >= 1")) ({"n_estimators": 0}, ValueError, "n_estimators == 0, must be >= 1"), - ({"learning_rate": 0}, ValueError, "learning_rate == 0, must be > 0."), + ({"learning_rate": -1}, ValueError, "learning_rate == 0, must be > 0."), + ({"learning_rate": 0}, ValueError, "learning_rate == 0, must be > 0.")) ( {"algorithm": "unknown"}, ValueError, From b924d3458d118c971f4411784d6a13259cd315b5 Mon Sep 17 00:00:00 2001 From: genvalen Date: Fri, 29 Oct 2021 15:08:49 -0400 Subject: [PATCH 15/19] Update sklearn/ensemble/_weight_boosting.py Co-authored-by: Thomas J. Fan --- sklearn/ensemble/_weight_boosting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/ensemble/_weight_boosting.py b/sklearn/ensemble/_weight_boosting.py index 79cef976c705c..1e9d49d5f51e2 100644 --- a/sklearn/ensemble/_weight_boosting.py +++ b/sklearn/ensemble/_weight_boosting.py @@ -499,7 +499,7 @@ def fit(self, X, y, sample_weight=None): # Check that algorithm is supported if self.algorithm not in ("SAMME", "SAMME.R"): raise ValueError( - f"Algorithm must be 'SAMME' or 'SAMME.R'. Got {self.algorithm} instead." + f"Algorithm must be 'SAMME' or 'SAMME.R'. Got {self.algorithm!r} instead." ) # Fit From e141f1e7eccf37f1f88d5118604c1d357470e709 Mon Sep 17 00:00:00 2001 From: genvalen Date: Fri, 29 Oct 2021 15:26:32 -0400 Subject: [PATCH 16/19] Fix lint error --- sklearn/ensemble/tests/test_weight_boosting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/ensemble/tests/test_weight_boosting.py b/sklearn/ensemble/tests/test_weight_boosting.py index 5407793d0787e..244cc5cfd87b5 100755 --- a/sklearn/ensemble/tests/test_weight_boosting.py +++ b/sklearn/ensemble/tests/test_weight_boosting.py @@ -546,10 +546,10 @@ def test_adaboostregressor_sample_weight(): @pytest.mark.parametrize( "params, err_type, err_msg", [ - ({"n_estimators": -1}, ValueError, "n_estimators == 0, must be >= 1")) + ({"n_estimators": -1}, ValueError, "n_estimators == 0, must be >= 1"), ({"n_estimators": 0}, ValueError, "n_estimators == 0, must be >= 1"), ({"learning_rate": -1}, ValueError, "learning_rate == 0, must be > 0."), - ({"learning_rate": 0}, ValueError, "learning_rate == 0, must be > 0.")) + ({"learning_rate": 0}, ValueError, "learning_rate == 0, must be > 0."), ( {"algorithm": "unknown"}, ValueError, From fae111b665df46985e7bb9a67414e675c9f0c68d Mon Sep 17 00:00:00 2001 From: genvalen Date: Fri, 29 Oct 2021 15:37:54 -0400 Subject: [PATCH 17/19] Fix another lint error --- sklearn/ensemble/_weight_boosting.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sklearn/ensemble/_weight_boosting.py b/sklearn/ensemble/_weight_boosting.py index 1e9d49d5f51e2..ed0202a9a97ee 100644 --- a/sklearn/ensemble/_weight_boosting.py +++ b/sklearn/ensemble/_weight_boosting.py @@ -499,7 +499,8 @@ def fit(self, X, y, sample_weight=None): # Check that algorithm is supported if self.algorithm not in ("SAMME", "SAMME.R"): raise ValueError( - f"Algorithm must be 'SAMME' or 'SAMME.R'. Got {self.algorithm!r} instead." + "Algorithm must be 'SAMME' or 'SAMME.R'." + f" Got {self.algorithm!r} instead." ) # Fit From a4e20ed5e700056420aff040d59921bda9fdc90b Mon Sep 17 00:00:00 2001 From: genvalen Date: Sat, 30 Oct 2021 17:46:21 -0400 Subject: [PATCH 18/19] Update sklearn/ensemble/tests/test_weight_boosting.py Co-authored-by: Guillaume Lemaitre --- sklearn/ensemble/tests/test_weight_boosting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/ensemble/tests/test_weight_boosting.py b/sklearn/ensemble/tests/test_weight_boosting.py index 244cc5cfd87b5..69a6b7baa51d1 100755 --- a/sklearn/ensemble/tests/test_weight_boosting.py +++ b/sklearn/ensemble/tests/test_weight_boosting.py @@ -546,7 +546,7 @@ def test_adaboostregressor_sample_weight(): @pytest.mark.parametrize( "params, err_type, err_msg", [ - ({"n_estimators": -1}, ValueError, "n_estimators == 0, must be >= 1"), + ({"n_estimators": -1}, ValueError, "n_estimators == -1, must be >= 1"), ({"n_estimators": 0}, ValueError, "n_estimators == 0, must be >= 1"), ({"learning_rate": -1}, ValueError, "learning_rate == 0, must be > 0."), ({"learning_rate": 0}, ValueError, "learning_rate == 0, must be > 0."), From cbde0c4807f2297004bf5d0be52942d585927cb9 Mon Sep 17 00:00:00 2001 From: genvalen Date: Sun, 31 Oct 2021 00:42:35 -0400 Subject: [PATCH 19/19] Update tests --- sklearn/ensemble/tests/test_weight_boosting.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sklearn/ensemble/tests/test_weight_boosting.py b/sklearn/ensemble/tests/test_weight_boosting.py index 69a6b7baa51d1..290f4b64dcc71 100755 --- a/sklearn/ensemble/tests/test_weight_boosting.py +++ b/sklearn/ensemble/tests/test_weight_boosting.py @@ -548,7 +548,13 @@ def test_adaboostregressor_sample_weight(): [ ({"n_estimators": -1}, ValueError, "n_estimators == -1, must be >= 1"), ({"n_estimators": 0}, ValueError, "n_estimators == 0, must be >= 1"), - ({"learning_rate": -1}, ValueError, "learning_rate == 0, must be > 0."), + ( + {"n_estimators": 1.5}, + TypeError, + "n_estimators must be an instance of ," + " not ", + ), + ({"learning_rate": -1}, ValueError, "learning_rate == -1, must be > 0."), ({"learning_rate": 0}, ValueError, "learning_rate == 0, must be > 0."), ( {"algorithm": "unknown"}, @@ -560,7 +566,7 @@ def test_adaboostregressor_sample_weight(): def test_adaboost_classifier_params_validation(params, err_type, err_msg): """Check the parameters validation in `AdaBoostClassifier`.""" with pytest.raises(err_type, match=err_msg): - AdaBoostClassifier(**params).fit(X, y_class) # args are from toy sample + AdaBoostClassifier(**params).fit(X, y_class) @pytest.mark.parametrize("algorithm", ["SAMME", "SAMME.R"])