Hyperparameter Tuning in Python
Alex Scriven
Data Scientist
Laten we de uitvoer van GridSearchCV analyseren.
Drie groepen eigenschappen van GridSearchCV:
cv_results_best_index_, best_params_ & best_score_scorer_, n_splits_ & refit_time_
Toegang tot properties gaat met dot-notatie.
Bijv.:
grid_search_object.property
Waar property de property is die je wilt ophalen.
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)
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.

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

De kolom params bevat een dictionary met alle parameters:
pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

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

De rangkolom ordent de mean_test_score van best naar slechtst:

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)

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.
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.
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.
print(grid_rf_class.best_estimator_)

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