Strojenie hiperparametrów w Pythonie
Alex Scriven
Data Scientist
Przeanalizujmy wyniki GridSearchCV.
Trzy grupy właściwości GridSearchCV:
cv_results_best_index_, best_params_ & best_score_scorer_, n_splits_ & refit_time_
Dostęp do właściwości uzyskuje się za pomocą notacji kropkowej.
Na przykład:
grid_search_object.property
Gdzie property to nazwa właściwości, którą chcemy pobrać.
Właściwość cv_results_:
Wczytaj ją do DataFrame, aby wydrukować i przeanalizować:
cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)
print(cv_results_df.shape)
(12, 23)
Kolumny time odnoszą się do czasu potrzebnego na dopasowanie (i ocenę) modelu.
Pamiętaj, że wykonaliśmy 5-krotną walidację krzyżową — model był uruchamiany 5 razy, a kolumny przechowują średnią i odchylenie standardowe czasu w sekundach.

Kolumny param_ przechowują parametry testowane w danym wierszu — jedna kolumna na parametr.

Kolumna params zawiera słownik wszystkich parametrów:
pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

Kolumny test_score zawierają wyniki na zbiorze testowym dla każdego podziału krzyżowego oraz statystyki podsumowujące:

Kolumna rankingu porządkuje mean_test_score od najlepszego do najgorszego:

Najlepszy wiersz siatki można łatwo wybrać z cv_results_ przy użyciu kolumny rank_test_score
best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

Kolumny test_score są następnie powtórzone dla training_scores.
Ważne uwagi:
return_train_score musi być True, aby uwzględnić kolumny wyników treningowych.
Brak kolumny rankingu dla wyników treningowych — liczy się tylko wydajność na zbiorze testowym.
Informacje o najlepszym polu siatki są zebrane w trzech właściwościach:
best_params_ — słownik parametrów, które dały najlepszy wynik.
best_score_ — wartość najlepszego wyniku.
best_index_ — wiersz w cv_results_.rank_test_score z najlepszym wynikiem.
Właściwość best_estimator_ to estymator zbudowany z użyciem najlepszych parametrów przeszukiwania siatki.
W naszym przypadku jest to estymator Random Forest:
type(grid_rf_class.best_estimator_)
sklearn.ensemble.forest.RandomForestClassifier
Można też bezpośrednio użyć tego obiektu jako estymatora!
print(grid_rf_class.best_estimator_)

Dodatkowe informacje dostępne są w następujących właściwościach:
scorer_Funkcja oceniająca użyta na danych walidacyjnych. (ustawiona na AUC)
n_splits_Liczba podziałów walidacji krzyżowej. (ustawiona na 5)
refit_time_Czas w sekundach poświęcony na ponowne dopasowanie najlepszego modelu do całego zbioru danych.
Strojenie hiperparametrów w Pythonie