Een gridsearch-uitvoer begrijpen

Hyperparameter Tuning in Python

Alex Scriven

Data Scientist

De uitvoer analyseren

Laten we de uitvoer van GridSearchCV analyseren.

Drie groepen eigenschappen van GridSearchCV:

  • Een resultatenlog
    • cv_results_
  • De beste resultaten
    • best_index_, best_params_ & best_score_
  • 'Extra informatie'
    • scorer_, n_splits_ & refit_time_
Hyperparameter Tuning in Python

Toegang tot objectproperties

 

Toegang tot properties gaat met dot-notatie.

Bijv.:

grid_search_object.property

Waar property de property is die je wilt ophalen.

Hyperparameter Tuning in Python

De property .cv_results_

De property cv_results_:

Lees dit in een DataFrame om te printen en te analyseren:

cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)

print(cv_results_df.shape)

(12, 23)

  • 12 rijen voor de 12 cellen in onze grid, ofwel 12 modellen die we draaiden
Hyperparameter Tuning in Python

De .cv_results_ 'time'-kolommen

De time-kolommen geven de tijd voor fitten (en scoren) aan.

We deden 5-fold cross-validatie. Dit draaide 5 keer en sloeg gemiddelde en standaardafwijking in seconden op.

tijdkolommen

Hyperparameter Tuning in Python

De .cv_results_ 'param_'‑kolommen

 

De param_-kolommen slaan per rij de geteste parameters op, één kolom per parameter.

param-kolommen

Hyperparameter Tuning in Python

De .cv_results_ 'param'-kolom

De kolom params bevat een dictionary met alle parameters:

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

kolom params

Hyperparameter Tuning in Python

De .cv_results_ 'test_score'-kolommen

 

De test_score-kolommen bevatten de scores op onze testset per fold plus samenvattingsstatistieken:

testscore

Hyperparameter Tuning in Python

De .cv_results_ 'rank_test_score'-kolom

 

De rangkolom ordent de mean_test_score van best naar slechtst:

rang testscore

Hyperparameter Tuning in Python

De beste rij extraheren

 

Selecteer de beste gridcel eenvoudig uit cv_results_ met de kolom rank_test_score

best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

beste rij

Hyperparameter Tuning in Python

De .cv_results_ 'train_score'-kolommen

De test_score-kolommen worden herhaald als training_scores.

Belangrijke aandachtspunten:

  • return_train_score moet True zijn om trainingskolommen op te nemen.

  • Er is geen rangkolom voor trainingsscores; we letten alleen op testprestatie.

Hyperparameter Tuning in Python

De beste gridcel

 

Info over de beste gridcel is samengevat in drie properties:

  • best_params_: de parameters met de beste score.

  • best_score_: de beste score.

  • best_index_: de rij in cv_results_.rank_test_score met de beste score.

Hyperparameter Tuning in Python

De property best_estimator_

 

De property best_estimator_ is een estimator gebouwd met de beste parameters uit de gridsearch.

Voor ons is dit een Random Forest-estimator:

type(grid_rf_class.best_estimator_)

sklearn.ensemble.forest.RandomForestClassifier

Je kunt dit object ook direct als estimator gebruiken.

Hyperparameter Tuning in Python

De property best_estimator_

print(grid_rf_class.best_estimator_)

print van best estimator-code

Hyperparameter Tuning in Python

Extra informatie

Extra info is beschikbaar via deze properties:

  • scorer_

Welke scorer is gebruikt op de hold-out data (we kozen AUC).

  • n_splits_

Aantal cross-validatiesplits (we kozen 5).

  • refit_time_

Het aantal seconden om het beste model te refitten op de hele dataset.

Hyperparameter Tuning in Python

Laten we oefenen!

Hyperparameter Tuning in Python

Preparing Video For Download...