Тюнінг гіперпараметрів у Python
Alex Scriven
Data Scientist
Проаналізуймо вивід GridSearchCV.
Три групи властивостей GridSearchCV:
cv_results_best_index_, best_params_ і best_score_scorer_, n_splits_ і refit_time_
Доступ до властивостей здійснюється через крапкову нотацію.
Наприклад:
grid_search_object.property
Де property — це саме та властивість, яку ви хочете отримати
Властивість cv_results_:
Зчитайте її в DataFrame, щоб вивести й проаналізувати:
cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)
print(cv_results_df.shape)
(12, 23)
Стовпці time відображають час, потрібний для навчання (і оцінювання) моделі.
Пам'ятайте, ми робили 5-кратну крос-валідацію. Запуск був 5 разів, збережено середнє та стандартне відхилення часу в секундах.

Стовпці param_ зберігають параметри, протестовані в цьому рядку, по одному стовпцю на параметр

Стовпець params містить словник усіх параметрів:
pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

Стовпці test_score містять бали на нашому тестовому наборі для кожного з фолдів, а також підсумкову статистику:

Стовпець рангу, що впорядковує mean_test_score від найкращого до найгіршого:

Можна легко вибрати найкращу клітинку сітки з cv_results_, використовуючи стовпець rank_test_score
best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

Стовпці test_score повторюються для training_scores.
Важливі зауваги:
return_train_score має бути True, щоб додати стовпці навчальних балів.
Для навчальних балів немає стовпця рангу, адже нас цікавить продуктивність на тесті
Відомості про найкращу клітинку сітки стисло зібрані в трьох властивостях:
best_params_ — словник параметрів, що дали найкращий бал.
best_score_ — фактичний найкращий бал.
best_index_ — рядок у cv_results_.rank_test_score, що був найкращим.
Властивість best_estimator_ — це оцінювач, збудований з найкращими параметрами з grid search.
У нас це оцінювач Random Forest:
type(grid_rf_class.best_estimator_)
sklearn.ensemble.forest.RandomForestClassifier
За потреби ви можете напряму використовувати цей об'єкт як оцінювач!
print(grid_rf_class.best_estimator_)

Додаткова інформація доступна у таких властивостях:
scorer_Яку функцію оцінювання застосовано до відкладених даних (ми задали AUC).
n_splits_Скільки розбиттів крос-валідації (ми задали 5).
refit_time_Кількість секунд на перенавчання найкращої моделі на всьому наборі даних.
Тюнінг гіперпараметрів у Python