Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 1bd9c1d

Browse filesBrowse files
authored
FIX GridSearchCV regression in 1.5 with parameter grid with heterogeneous parameter values (#29078)
1 parent 6a18882 commit 1bd9c1d
Copy full SHA for 1bd9c1d

File tree

3 files changed

+89
-26
lines changed
Filter options

3 files changed

+89
-26
lines changed

‎doc/whats_new/v1.5.rst

Copy file name to clipboardExpand all lines: doc/whats_new/v1.5.rst
+43-25Lines changed: 43 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,24 @@ For a short description of the main highlights of the release, please refer to
1313

1414
.. include:: changelog_legend.inc
1515

16+
.. _changes_1_5_1:
17+
18+
Version 1.5.1
19+
=============
20+
21+
**TODO**
22+
23+
Changelog
24+
---------
25+
26+
:mod:`sklearn.model_selection`
27+
..............................
28+
29+
- |Fix| Fix a regression in :class:`model_selection.GridSearchCV` for parameter
30+
grids that have heterogeneous parameter values.
31+
:pr:`29078` by :user:`Loïc Estève <lesteve>`
32+
33+
1634
.. _changes_1_5:
1735

1836
Version 1.5.0
@@ -550,29 +568,29 @@ Changelog
550568
Thanks to everyone who has contributed to the maintenance and improvement of
551569
the project since version 1.4, including:
552570

553-
101AlexMartin, Abdulaziz Aloqeely, Adam J. Stewart, Adam Li, Adarsh Wase, Adrin
554-
Jalali, Advik Sinha, Akash Srivastava, Akihiro Kuno, Alan Guedes, Alexis
555-
IMBERT, Ana Paula Gomes, Anderson Nelson, Andrei Dzis, Arnaud Capitaine, Arturo
556-
Amor, Aswathavicky, Bharat Raghunathan, Brendan Lu, Bruno, Cemlyn, Christian
557-
Lorentzen, Christian Veenhuis, Cindy Liang, Claudio Salvatore Arcidiacono,
558-
Connor Boyle, Conrad Stevens, crispinlogan, davidleon123, DerWeh, Dipan Banik,
559-
Duarte São José, DUONG, Eddie Bergman, Edoardo Abati, Egehan Gunduz, Emad
560-
Izadifar, Erich Schubert, Filip Karlo Došilović, Franck Charras, Gael
561-
Varoquaux, Gönül Aycı, Guillaume Lemaitre, Gyeongjae Choi, Harmanan Kohli,
562-
Hong Xiang Yue, Ian Faust, itsaphel, Ivan Wiryadi, Jack Bowyer, Javier Marin
563-
Tur, Jérémie du Boisberranger, Jérôme Dockès, Jiawei Zhang, Joel Nothman,
564-
Johanna Bayer, John Cant, John Hopfensperger, jpcars, jpienaar-tuks, Julian
565-
Libiseller-Egger, Julien Jerphanion, KanchiMoe, Kaushik Amar Das, keyber,
566-
Koustav Ghosh, kraktus, Krsto Proroković, ldwy4, LeoGrin, lihaitao, Linus
567-
Sommer, Loic Esteve, Lucy Liu, Lukas Geiger, manasimj, Manuel Labbé, Manuel
568-
Morales, Marco Edward Gorelli, Maren Westermann, Marija Vlajic, Mark Elliot,
569-
Mateusz Sokół, Mavs, Michael Higgins, Michael Mayer, miguelcsilva, Miki
570-
Watanabe, Mohammed Hamdy, myenugula, Nathan Goldbaum, Naziya Mahimkar, Neto,
571-
Olivier Grisel, Omar Salman, Patrick Wang, Pierre de Fréminville, Priyash
572-
Shah, Puneeth K, Rahil Parikh, raisadz, Raj Pulapakura, Ralf Gommers, Ralph
573-
Urlus, Randolf Scholz, Reshama Shaikh, Richard Barnes, Rodrigo Romero, Saad
574-
Mahmood, Salim Dohri, Sandip Dutta, SarahRemus, scikit-learn-bot, Shaharyar
575-
Choudhry, Shubham, sperret6, Stefanie Senger, Suha Siddiqui, Thanh Lam DANG,
576-
thebabush, Thomas J. Fan, Thomas Lazarus, Thomas Li, Tialo, Tim Head, Tuhin
577-
Sharma, VarunChaduvula, Vineet Joshi, virchan, Waël Boukhobza, Weyb, Will
571+
101AlexMartin, Abdulaziz Aloqeely, Adam J. Stewart, Adam Li, Adarsh Wase, Adrin
572+
Jalali, Advik Sinha, Akash Srivastava, Akihiro Kuno, Alan Guedes, Alexis
573+
IMBERT, Ana Paula Gomes, Anderson Nelson, Andrei Dzis, Arnaud Capitaine, Arturo
574+
Amor, Aswathavicky, Bharat Raghunathan, Brendan Lu, Bruno, Cemlyn, Christian
575+
Lorentzen, Christian Veenhuis, Cindy Liang, Claudio Salvatore Arcidiacono,
576+
Connor Boyle, Conrad Stevens, crispinlogan, davidleon123, DerWeh, Dipan Banik,
577+
Duarte São José, DUONG, Eddie Bergman, Edoardo Abati, Egehan Gunduz, Emad
578+
Izadifar, Erich Schubert, Filip Karlo Došilović, Franck Charras, Gael
579+
Varoquaux, Gönül Aycı, Guillaume Lemaitre, Gyeongjae Choi, Harmanan Kohli,
580+
Hong Xiang Yue, Ian Faust, itsaphel, Ivan Wiryadi, Jack Bowyer, Javier Marin
581+
Tur, Jérémie du Boisberranger, Jérôme Dockès, Jiawei Zhang, Joel Nothman,
582+
Johanna Bayer, John Cant, John Hopfensperger, jpcars, jpienaar-tuks, Julian
583+
Libiseller-Egger, Julien Jerphanion, KanchiMoe, Kaushik Amar Das, keyber,
584+
Koustav Ghosh, kraktus, Krsto Proroković, ldwy4, LeoGrin, lihaitao, Linus
585+
Sommer, Loic Esteve, Lucy Liu, Lukas Geiger, manasimj, Manuel Labbé, Manuel
586+
Morales, Marco Edward Gorelli, Maren Westermann, Marija Vlajic, Mark Elliot,
587+
Mateusz Sokół, Mavs, Michael Higgins, Michael Mayer, miguelcsilva, Miki
588+
Watanabe, Mohammed Hamdy, myenugula, Nathan Goldbaum, Naziya Mahimkar, Neto,
589+
Olivier Grisel, Omar Salman, Patrick Wang, Pierre de Fréminville, Priyash
590+
Shah, Puneeth K, Rahil Parikh, raisadz, Raj Pulapakura, Ralf Gommers, Ralph
591+
Urlus, Randolf Scholz, Reshama Shaikh, Richard Barnes, Rodrigo Romero, Saad
592+
Mahmood, Salim Dohri, Sandip Dutta, SarahRemus, scikit-learn-bot, Shaharyar
593+
Choudhry, Shubham, sperret6, Stefanie Senger, Suha Siddiqui, Thanh Lam DANG,
594+
thebabush, Thomas J. Fan, Thomas Lazarus, Thomas Li, Tialo, Tim Head, Tuhin
595+
Sharma, VarunChaduvula, Vineet Joshi, virchan, Waël Boukhobza, Weyb, Will
578596
Dean, Xavier Beltran, Xiao Yuan, Xuefeng Xu, Yao Xiao

‎sklearn/model_selection/_search.py

Copy file name to clipboardExpand all lines: sklearn/model_selection/_search.py
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1090,7 +1090,7 @@ def _store(key_name, array, weights=None, splits=False, rank=False):
10901090
param_list = list(param_result.values())
10911091
try:
10921092
arr_dtype = np.result_type(*param_list)
1093-
except TypeError:
1093+
except (TypeError, ValueError):
10941094
arr_dtype = object
10951095
if len(param_list) == n_candidates and arr_dtype != object:
10961096
# Exclude `object` else the numpy constructor might infer a list of

‎sklearn/model_selection/tests/test_search.py

Copy file name to clipboardExpand all lines: sklearn/model_selection/tests/test_search.py
+45Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2641,3 +2641,48 @@ def test_score_rejects_params_with_no_routing_enabled(SearchCV, param_search):
26412641

26422642
# End of Metadata Routing Tests
26432643
# =============================
2644+
2645+
2646+
def test_cv_results_dtype_issue_29074():
2647+
"""Non-regression test for https://github.com/scikit-learn/scikit-learn/issues/29074"""
2648+
2649+
class MetaEstimator(BaseEstimator, ClassifierMixin):
2650+
def __init__(
2651+
self,
2652+
base_clf,
2653+
parameter1=None,
2654+
parameter2=None,
2655+
parameter3=None,
2656+
parameter4=None,
2657+
):
2658+
self.base_clf = base_clf
2659+
self.parameter1 = parameter1
2660+
self.parameter2 = parameter2
2661+
self.parameter3 = parameter3
2662+
self.parameter4 = parameter4
2663+
2664+
def fit(self, X, y=None):
2665+
self.base_clf.fit(X, y)
2666+
return self
2667+
2668+
def score(self, X, y):
2669+
return self.base_clf.score(X, y)
2670+
2671+
# Values of param_grid are such that np.result_type gives slightly
2672+
# different errors, in particular ValueError and TypeError
2673+
param_grid = {
2674+
"parameter1": [None, {"option": "A"}, {"option": "B"}],
2675+
"parameter2": [None, [1, 2]],
2676+
"parameter3": [{"a": 1}],
2677+
"parameter4": ["str1", "str2"],
2678+
}
2679+
grid_search = GridSearchCV(
2680+
estimator=MetaEstimator(LogisticRegression()),
2681+
param_grid=param_grid,
2682+
cv=3,
2683+
)
2684+
2685+
X, y = make_blobs(random_state=0)
2686+
grid_search.fit(X, y)
2687+
for param in param_grid:
2688+
assert grid_search.cv_results_[f"param_{param}"].dtype == object

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.