From 3d094bc729b26a7bb6989aaacfa7f59de8ac975e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vil=C3=A9m=20Zouhar?= Date: Sat, 13 Mar 2021 15:49:24 +0100 Subject: [PATCH 1/3] Fix error message for Minkowski metric parameter It is possible to pass p=1 for `minkowski` metric, even though internally the effective metric gets changed to `manhattan`. This PR simply edits the two error messages to not confuse the users. --- sklearn/neighbors/_base.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sklearn/neighbors/_base.py b/sklearn/neighbors/_base.py index 820b83eca1845..a973180c96df7 100644 --- a/sklearn/neighbors/_base.py +++ b/sklearn/neighbors/_base.py @@ -355,7 +355,7 @@ def _check_algorithm_metric(self): effective_p = self.p if self.metric in ['wminkowski', 'minkowski'] and effective_p < 1: - raise ValueError("p must be greater than one for minkowski metric") + raise ValueError("p must be greater or equal to one for minkowski metric") def _fit(self, X, y=None): if self._get_tags()["requires_y"]: @@ -411,8 +411,7 @@ def _fit(self, X, y=None): if self.metric == 'minkowski': p = self.effective_metric_params_.pop('p', 2) if p < 1: - raise ValueError("p must be greater than one " - "for minkowski metric") + raise ValueError("p must be greater or equal to one for minkowski metric") elif p == 1: self.effective_metric_ = 'manhattan' elif p == 2: From 6cad2f39dbc4a37884d5b072d79e4b000f4f9771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vil=C3=A9m=20Zouhar?= Date: Sat, 13 Mar 2021 19:04:32 +0100 Subject: [PATCH 2/3] Lint neighbors/_base.py Co-authored-by: Thomas J. Fan --- sklearn/neighbors/_base.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sklearn/neighbors/_base.py b/sklearn/neighbors/_base.py index a973180c96df7..005ffc6b91f13 100644 --- a/sklearn/neighbors/_base.py +++ b/sklearn/neighbors/_base.py @@ -411,7 +411,8 @@ def _fit(self, X, y=None): if self.metric == 'minkowski': p = self.effective_metric_params_.pop('p', 2) if p < 1: - raise ValueError("p must be greater or equal to one for minkowski metric") + raise ValueError("p must be greater or equal to one for " + "minkowski metric") elif p == 1: self.effective_metric_ = 'manhattan' elif p == 2: From 3d00be99c26468c9e1c4ec30422d6da1779174b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vil=C3=A9m=20Zouhar?= Date: Sat, 13 Mar 2021 19:04:44 +0100 Subject: [PATCH 3/3] Lint neighbors/_base.py Co-authored-by: Thomas J. Fan --- sklearn/neighbors/_base.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sklearn/neighbors/_base.py b/sklearn/neighbors/_base.py index 005ffc6b91f13..eb14e8ef0a900 100644 --- a/sklearn/neighbors/_base.py +++ b/sklearn/neighbors/_base.py @@ -355,7 +355,8 @@ def _check_algorithm_metric(self): effective_p = self.p if self.metric in ['wminkowski', 'minkowski'] and effective_p < 1: - raise ValueError("p must be greater or equal to one for minkowski metric") + raise ValueError("p must be greater or equal to one for " + "minkowski metric") def _fit(self, X, y=None): if self._get_tags()["requires_y"]: