Я не совсем понимаю значение best_score_ из GridSearchCV - PullRequest
0 голосов
/ 30 мая 2020

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

print(f'Ridge score is {np.sqrt(ridge_grid_search.best_score_ * -1)}')
print(f'Lasso score is {np.sqrt(lasso_grid_search.best_score_ * -1)}')
print(f'ElasticNet score is {np.sqrt(ElasticNet_grid_search.best_score_ * -1)}')
print(f'KRR score is {np.sqrt(KRR_grid_search.best_score_ * -1)}')
print(f'GradientBoosting score is {np.sqrt(gradientBoost_grid_search.best_score_ * -1)}')
print(f'XGBoosting score is {np.sqrt(XGB_grid_search.best_score_ * -1)}')
print(f'LGBoosting score is {np.sqrt(LGB_grid_search.best_score_ * -1)}')

Результаты размещены здесь:

Ridge score is 0.11353489315048314
Lasso score is 0.11118171778462431
ElasticNet score is 0.11122236468840378
KRR score is 0.11322596291030147
GradientBoosting score is 0.11111049287476948
XGBoosting score is 0.11404604560959673
LGBoosting score is 0.11299104859531962

Я не знаю, как выбрать лучшую модель. Является ли XGBoosting моей лучшей моделью в данном случае?

1 Ответ

1 голос
/ 01 июня 2020

Ваш код не предоставляется, однако из-за имени ridge_grid_search Я полагаю, вы используете sklearn.model_selection.GridSearchCV для выбора модели. GridSearch следует использовать для настройки гиперпараметров одной модели и не следует использовать для сравнения разных моделей друг с другом. ridge_grid_search.best_score_ возвращает лучший результат, достигнутый лучшими гиперпараметрами, найденными во время поиска по сетке данного алгоритма.

Для сравнения моделей следует использовать алгоритм перекрестной проверки, такой как перекрестная проверка в k-кратном размере При использовании перекрестной проверки убедитесь, что каждая модель обучена и протестирована на одних и тех же наборах для обучения / тестирования для честного сравнения.

...