Förstå utdata från en grid search

Hyperparameterjustering i Python

Alex Scriven

Data Scientist

Analysera utdata

Vi analyserar utdata från GridSearchCV.

Tre grupper av egenskaper i GridSearchCV:

  • En resultatlogg
    • cv_results_
  • De bästa resultaten
    • best_index_, best_params_ & best_score_
  • "Extra information"
    • scorer_, n_splits_ & refit_time_
Hyperparameterjustering i Python

Åtkomst till objektegenskaper

 

Egenskaper nås med punktnotation.

Till exempel:

grid_search_object.property

Där property är den egenskap du vill hämta

Hyperparameterjustering i Python

Egenskapen .cv_results_

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)

  • De 12 raderna motsvarar de 12 rutorna i vårt grid, det vill säga 12 körda modeller
Hyperparameterjustering i Python

Tidskolumnerna i .cv_results_

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.

tidskolumner

Hyperparameterjustering i Python

Kolumnerna param_ i .cv_results_

 

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

param-kolumner

Hyperparameterjustering i Python

Kolumnen param i .cv_results_

Kolumnen params innehåller en ordbok med alla parametrar:

pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

params-kolumn

Hyperparameterjustering i Python

Kolumnerna test_score i .cv_results_

 

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

testpoäng

Hyperparameterjustering i Python

Kolumnen rank_test_score i .cv_results_

 

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

rangordning testpoäng

Hyperparameterjustering i Python

Extrahera den bästa raden

 

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)

bästa rad

Hyperparameterjustering i Python

Kolumnerna train_score i .cv_results_

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.

Hyperparameterjustering i Python

Den bästa gridrutan

 

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.

Hyperparameterjustering i Python

Egenskapen best_estimator_

 

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!

Hyperparameterjustering i Python

Egenskapen best_estimator_

print(grid_rf_class.best_estimator_)

utskrift av bästa estimator-kod

Hyperparameterjustering i Python

Extra information

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

Nu kör vi en övning!

Hyperparameterjustering i Python

Preparing Video For Download...