Как использовать оптимальные параметры, определенные GridSearchCV - PullRequest
2 голосов
/ 09 апреля 2019

Я использую GridSearchCV для определения оптимальных параметров, но я не уверен, как на самом деле использовать оптимальные параметры, то есть в приведенном ниже коде в третьей строке мои результаты не меняются после изменения первой строки ( например, если я изменяю пространство параметров или заменяю отзыв на точность и т. д.)

cv = GridSearchCV(pipeline, parameters, cv=len(range(2014,2019)), scoring='recall', refit=True)
cv.fit(X,y)
y_pred = cross_val_predict(cv, X, y, cv=len(range(2014,2019)))

Есть ли способ убедиться, что любые оптимальные параметры, определенные в GridSearchCV, действительно также используются в будущем, когда я вызываю cv.predict?

Ответы [ 2 ]

3 голосов
/ 09 апреля 2019

GridSearchCV уже делает то, что вы хотите по умолчанию, если вы не установите refit=False. Как указано в GridSearchCV документации :

refit: логическое значение или строка, по умолчанию = True
Установите оценщик, используя лучшие найденные параметры во всем наборе данных.

Для оценки нескольких показателей это должна быть строка, обозначающая счетчик, который используется для поиска наилучших параметров для повторной оценки в конце.

Переработанный оценщик доступен в атрибуте best_estimator_, а разрешает использование predict непосредственно для этого GridSearchCV экземпляра .

Также для оценки нескольких метрик атрибуты best_index_, best_score_ и best_params_ будут доступны только в том случае, если установлен refit и все они будут определены с помощью этого конкретного счетчика.

См. Параметр оценки, чтобы узнать больше о множественной оценке метрики.

Так что, когда вы звоните cv.predict, лучший оценщик, который был отремонтирован, делает прогноз.

В вашем случае результаты совпадают, вероятно, потому, что лучший оценщик набирает наибольшее значение по по всем показателям .

1 голос
/ 09 апреля 2019

Из документации здесь написано:

predict(x) Прогноз вызова на оценщике с наилучшими найденными параметрами.

По существупосле подгонки вызывая предикат использует оптимальный оценщик.Если вы хотите перепроверить ваши параметры, вы можете после подгонки увидеть, что лучшие параметры хранятся в атрибуте класса best_params_.

Что касается того, почему ваши результаты не меняются после изменения первой строки, я бы предположилчто он по совпадению достигает тех же самых лучших параметров или что существует несколько лучших параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...