RandomSearchCV in Scikit Learn
Laten we oefenen met het opzetten van een RandomizedSearchCV-object met Scikit Learn.
De hyperparametergrid moet gelden voor max_depth (alle waarden tussen en inclusief 5 en 25) en max_features ('auto' en 'sqrt').
De gewenste opties voor het RandomizedSearchCV-object zijn:
- Een RandomForestClassifier-estimator met
n_estimatorsvan 80. - 3-voudige cross-validatie (
cv) - Gebruik
roc_aucom de modellen te scoren - Gebruik 4 cores voor parallelle verwerking (
n_jobs) - Zorg dat je het beste model opnieuw fit en trainingsscores retourneert
- Sample slechts 5 modellen voor efficiëntie (
n_iter)
X_train en y_train gegevenssets zijn voor je geladen.
Onthoud: de gekozen hyperparameters vind je in cv_results_, met één kolom per hyperparameter. De kolom voor de hyperparameter criterion is bijvoorbeeld param_criterion.
Deze oefening maakt deel uit van de cursus
Hyperparameter Tuning in Python
Oefeninstructies
- Maak een hyperparametergrid zoals hierboven beschreven.
- Maak een
RandomizedSearchCV-object zoals hierboven uitgewerkt. - Fit het
RandomizedSearchCV-object op de trainingsdata. - Indexeer in het
cv_results_-object om de waarden af te drukken die door het modelleerproces zijn gekozen voor beide hyperparameters (max_depthenmax_features).
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Create the parameter grid
param_grid = {'max_depth': list(range(____,26)), 'max_features': [____ , ____]}
# Create a random search object
random_rf_class = RandomizedSearchCV(
estimator = ____(n_estimators=____),
param_distributions = ____, n_iter = ____,
scoring=____, n_jobs=____, cv = ____, refit=____, return_train_score = ____ )
# Fit to the training data
____.fit(X_train, y_train)
# Print the values used for both hyperparameters
print(random_rf_class.cv_results_[____])
print(random_rf_class.cv_results_[____])