From b89c4dcf5de95692a15b44e703357effb1976617 Mon Sep 17 00:00:00 2001 From: Rushil Desai Date: Mon, 10 Oct 2022 20:07:14 +0530 Subject: [PATCH 1/5] deprecated parameter --- doc/whats_new/v1.2.rst | 4 ++++ sklearn/metrics/pairwise.py | 15 ++++++++++++++- sklearn/metrics/tests/test_pairwise.py | 15 +++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index b6458339fa675..55da094f13b8f 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -406,6 +406,10 @@ Changelog (`average="micro"`) for the One-vs-Rest multiclass case (`multi_class="ovr"`). :pr:`24338` by :user:`Arturo Amor `. +- |API| The parameter `sum_over_features` of :func:`metrics.pairwise.manhattan_distances` are deprecated + and will be removed in 1.4. + :pr:`to add` by :user:`Rushil Desai `. + :mod:`sklearn.model_selection` .............................. diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index a8c5988fbce2d..6a5994b020d36 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -873,7 +873,7 @@ def haversine_distances(X, Y=None): return DistanceMetric.get_metric("haversine").pairwise(X, Y) -def manhattan_distances(X, Y=None, *, sum_over_features=True): +def manhattan_distances(X, Y=None, *, sum_over_features='deprecated'): """Compute the L1 distances between the vectors in X and Y. With sum_over_features equal to False it returns the componentwise @@ -895,6 +895,10 @@ def manhattan_distances(X, Y=None, *, sum_over_features=True): else it returns the componentwise L1 pairwise-distances. Not supported for sparse matrix inputs. + .. deprecated:: 1.2 + ``sum_over_features`` was deprecated in version 1.2 and will be removed in + 1.4. + Returns ------- D : ndarray of shape (n_samples_X * n_samples_Y, n_features) or \ @@ -931,6 +935,15 @@ def manhattan_distances(X, Y=None, *, sum_over_features=True): array([[1., 1.], [1., 1.]]) """ + if sum_over_features != 'deprecated': + warnings.warn( + "`sum_over_features` is deprecated in version 1.2 and will be" + " removed in version 1.4.", + FutureWarning, + ) + else: + sum_over_features = True + X, Y = check_pairwise_arrays(X, Y) if issparse(X) or issparse(Y): diff --git a/sklearn/metrics/tests/test_pairwise.py b/sklearn/metrics/tests/test_pairwise.py index 2f6d582eb8f2d..7ca468609bf3b 100644 --- a/sklearn/metrics/tests/test_pairwise.py +++ b/sklearn/metrics/tests/test_pairwise.py @@ -196,6 +196,21 @@ def test_pairwise_distances(global_dtype): pairwise_distances(X, Y, metric="blah") +@pytest.mark.parametrize("sum_over_features", [True, False]) +def test_manhattan_distances_deprecated_sum_over_features(sum_over_features): + """Check that future warning is raised when user enters sum_over_features argument.""" + X = [[1, 2], [3, 4]] + Y = [[1, 2], [0, 3]] + with pytest.warns( + FutureWarning, + match=( + "`sum_over_features` is deprecated in version 1.2 and will be" + " removed in version 1.4." + ), + ): + manhattan_distances(X, Y, sum_over_features=sum_over_features) + + @pytest.mark.parametrize("metric", PAIRWISE_BOOLEAN_FUNCTIONS) def test_pairwise_boolean_distance(metric): # test that we convert to boolean arrays for boolean distances From b610977870695752c2da070e1e28a2cca344a803 Mon Sep 17 00:00:00 2001 From: Rushil Desai Date: Mon, 10 Oct 2022 20:13:22 +0530 Subject: [PATCH 2/5] minor fixes --- sklearn/metrics/pairwise.py | 9 ++++----- sklearn/metrics/tests/test_pairwise.py | 3 ++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index 6a5994b020d36..135ff152ef2dc 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -873,7 +873,7 @@ def haversine_distances(X, Y=None): return DistanceMetric.get_metric("haversine").pairwise(X, Y) -def manhattan_distances(X, Y=None, *, sum_over_features='deprecated'): +def manhattan_distances(X, Y=None, *, sum_over_features="deprecated"): """Compute the L1 distances between the vectors in X and Y. With sum_over_features equal to False it returns the componentwise @@ -931,11 +931,10 @@ def manhattan_distances(X, Y=None, *, sum_over_features='deprecated'): >>> import numpy as np >>> X = np.ones((1, 2)) >>> y = np.full((2, 2), 2.) - >>> manhattan_distances(X, y, sum_over_features=False) - array([[1., 1.], - [1., 1.]]) + >>> manhattan_distances(X, y) + array([[2. 2.]]) """ - if sum_over_features != 'deprecated': + if sum_over_features != "deprecated": warnings.warn( "`sum_over_features` is deprecated in version 1.2 and will be" " removed in version 1.4.", diff --git a/sklearn/metrics/tests/test_pairwise.py b/sklearn/metrics/tests/test_pairwise.py index 7ca468609bf3b..16cdb43ba782f 100644 --- a/sklearn/metrics/tests/test_pairwise.py +++ b/sklearn/metrics/tests/test_pairwise.py @@ -198,7 +198,8 @@ def test_pairwise_distances(global_dtype): @pytest.mark.parametrize("sum_over_features", [True, False]) def test_manhattan_distances_deprecated_sum_over_features(sum_over_features): - """Check that future warning is raised when user enters sum_over_features argument.""" + # Check that future warning is raised when user + # enters `sum_over_features` argument. X = [[1, 2], [3, 4]] Y = [[1, 2], [0, 3]] with pytest.warns( From dbff9ad030837b45fabe905ab0489b575ee0d517 Mon Sep 17 00:00:00 2001 From: Rushil Desai Date: Mon, 10 Oct 2022 22:55:54 +0530 Subject: [PATCH 3/5] changelog --- doc/whats_new/v1.2.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index 55da094f13b8f..24701435c047a 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -408,7 +408,7 @@ Changelog - |API| The parameter `sum_over_features` of :func:`metrics.pairwise.manhattan_distances` are deprecated and will be removed in 1.4. - :pr:`to add` by :user:`Rushil Desai `. + :pr:`24630` by :user:`Rushil Desai `. :mod:`sklearn.model_selection` .............................. From eabb055fc72173ec251c6baba60151fed6922875 Mon Sep 17 00:00:00 2001 From: Rushil Desai Date: Mon, 10 Oct 2022 23:18:36 +0530 Subject: [PATCH 4/5] fixed --- sklearn/metrics/pairwise.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index 135ff152ef2dc..e273bf5a59b64 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -932,7 +932,7 @@ def manhattan_distances(X, Y=None, *, sum_over_features="deprecated"): >>> X = np.ones((1, 2)) >>> y = np.full((2, 2), 2.) >>> manhattan_distances(X, y) - array([[2. 2.]]) + array([[2., 2.]]) """ if sum_over_features != "deprecated": warnings.warn( From 1229fbc758efa1ad594ded699ff91d3b70caef2c Mon Sep 17 00:00:00 2001 From: Rushil Desai Date: Fri, 14 Oct 2022 17:59:38 +0530 Subject: [PATCH 5/5] fixed --- doc/whats_new/v1.2.rst | 2 +- sklearn/metrics/pairwise.py | 6 +----- sklearn/metrics/tests/test_pairwise.py | 1 + 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index 24701435c047a..015e7d69de43e 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -406,7 +406,7 @@ Changelog (`average="micro"`) for the One-vs-Rest multiclass case (`multi_class="ovr"`). :pr:`24338` by :user:`Arturo Amor `. -- |API| The parameter `sum_over_features` of :func:`metrics.pairwise.manhattan_distances` are deprecated +- |API| The parameter `sum_over_features` of :func:`metrics.pairwise.manhattan_distances` is deprecated and will be removed in 1.4. :pr:`24630` by :user:`Rushil Desai `. diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index e273bf5a59b64..a5d428eb813bd 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -928,12 +928,8 @@ def manhattan_distances(X, Y=None, *, sum_over_features="deprecated"): [[1, 2], [0, 3]]) array([[0., 2.], [4., 4.]]) - >>> import numpy as np - >>> X = np.ones((1, 2)) - >>> y = np.full((2, 2), 2.) - >>> manhattan_distances(X, y) - array([[2., 2.]]) """ + # TODO(1.4): remove sum_over_features if sum_over_features != "deprecated": warnings.warn( "`sum_over_features` is deprecated in version 1.2 and will be" diff --git a/sklearn/metrics/tests/test_pairwise.py b/sklearn/metrics/tests/test_pairwise.py index 16cdb43ba782f..3624983c4c481 100644 --- a/sklearn/metrics/tests/test_pairwise.py +++ b/sklearn/metrics/tests/test_pairwise.py @@ -196,6 +196,7 @@ def test_pairwise_distances(global_dtype): pairwise_distances(X, Y, metric="blah") +# TODO(1.4): Remove test when `sum_over_features` parameter is removed @pytest.mark.parametrize("sum_over_features", [True, False]) def test_manhattan_distances_deprecated_sum_over_features(sum_over_features): # Check that future warning is raised when user