Hyperparameterjustering i Python
Alex Scriven
Data Scientist
Vi analyserar utdata från GridSearchCV.
Tre grupper av egenskaper i GridSearchCV:
cv_results_best_index_, best_params_ & best_score_scorer_, n_splits_ & refit_time_
Egenskaper nås med punktnotation.
Till exempel:
grid_search_object.property
Där property är den egenskap du vill hämta
Egenskapen cv_results_:
Läs in den i en DataFrame för att skriva ut och analysera:
cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)
print(cv_results_df.shape)
(12, 23)
Kolumnerna time visar hur lång tid det tog att träna (och poängsätta) modellen.
Kom ihåg att vi använde 5-faldig korsvalidering? Den kördes 5 gånger och lagrade medelvärde och standardavvikelse för tiderna i sekunder.

Kolumnerna param_ lagrar de parametrar som testades på respektive rad, en kolumn per parameter

Kolumnen params innehåller en ordbok med alla parametrar:
pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

Kolumnerna test_score innehåller poängen på testmängden för varje korsvalideringsfold samt sammanfattande statistik:

Rangordningskolumnen sorterar mean_test_score från bäst till sämst:

Vi kan enkelt välja ut den bästa gridrutan från cv_results_ med hjälp av kolumnen rank_test_score
best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

Kolumnerna test_score upprepas sedan för training_scores.
Viktigt att ha i åtanke:
return_train_score måste vara True för att träningspoängskolumnerna ska inkluderas.
Det finns ingen rangordningskolumn för träningspoäng – vi bryr oss enbart om prestanda på testmängden.
Information om den bästa gridrutan sammanfattas i tre egenskaper:
best_params_ – ordboken med parametrarna som gav bäst poäng.
best_score_ – det faktiska bästa poängvärdet.
best_index_ – raden i cv_results_.rank_test_score som var bäst.
Egenskapen best_estimator_ är en estimator byggd med de bästa parametrarna från grid search.
I vårt fall är det en Random Forest-estimator:
type(grid_rf_class.best_estimator_)
sklearn.ensemble.forest.RandomForestClassifier
Det här objektet kan också användas direkt som estimator!
print(grid_rf_class.best_estimator_)

Ytterligare information finns i följande egenskaper:
scorer_Vilken poängfunktion som användes på valideringsdata. (Vi satte den till AUC)
n_splits_Antalet korsvalideringsuppdelningar. (Vi satte det till 5)
refit_time_Antalet sekunder som användes för att återträna den bästa modellen på hela datamängden.
Hyperparameterjustering i Python