Hyperparameter Tuning in Python
Alex Scriven
Data Scientist
Analyzujme výstupy GridSearchCV.
Tři skupiny vlastností GridSearchCV:
cv_results_best_index_, best_params_ & best_score_scorer_, n_splits_ & refit_time_
K vlastnostem se přistupuje pomocí tečkové notace.
Například:
grid_search_object.property
Kde property je název požadované vlastnosti.
Vlastnost cv_results_:
Načtěte ji do DataFrame pro výpis a analýzu:
cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)
print(cv_results_df.shape)
(12, 23)
Sloupce time udávají čas potřebný k natrénování (a vyhodnocení) modelu.
Pamatujte, že jsme použili 5-násobnou cross-validaci – model byl spuštěn 5krát a byl uložen průměr a směrodatná odchylka časů v sekundách.

Sloupce param_ uchovávají parametry testované v daném řádku – jeden sloupec na parametr.

Sloupec params obsahuje slovník všech parametrů:
pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

Sloupce test_score obsahují skóre na testovací sadě pro každý cross-fold a souhrnné statistiky:

Sloupec rank seřazuje mean_test_score od nejlepšího k nejhoršímu:

Nejlepší řádek gridu lze snadno vybrat z cv_results_ pomocí sloupce rank_test_score
best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

Sloupce test_score se opakují pro training_scores.
Důležité poznámky:
return_train_score musí být True, aby byly zahrnuty sloupce trénovacích skóre.
Pro trénovací skóre neexistuje sloupec pořadí – zajímá nás pouze výkon na testovací sadě.
Informace o nejlepším čtverci gridu jsou přehledně shrnuty v těchto třech vlastnostech:
best_params_ – slovník parametrů, které dosáhly nejlepšího skóre.
best_score_ – skutečně nejlepší skóre.
best_index_ – řádek v cv_results_.rank_test_score s nejlepším výsledkem.
Vlastnost best_estimator_ je estimátor sestavený z nejlepších parametrů grid search.
V našem případě jde o estimátor Random Forest:
type(grid_rf_class.best_estimator_)
sklearn.ensemble.forest.RandomForestClassifier
Tento objekt lze přímo použít jako estimátor!
print(grid_rf_class.best_estimator_)

Doplňkové informace jsou dostupné v těchto vlastnostech:
scorer_Jaká skórovací funkce byla použita na testovacích datech. (nastaveno na AUC)
n_splits_Počet cross-validačních rozdělení. (nastaveno na 5)
refit_time_Počet sekund potřebných k opětovnému natrénování nejlepšího modelu na celé datové sadě.
Hyperparameter Tuning in Python