RandomizedSearchCV in Scikit Learn
Esercitiamoci a costruire un oggetto RandomizedSearchCV usando Scikit Learn.
La griglia degli iperparametri deve includere max_depth (tutti i valori tra 5 e 25, inclusi) e max_features ('auto' e 'sqrt').
Le opzioni desiderate per l'oggetto RandomizedSearchCV sono:
- Un Estimator RandomForestClassifier con
n_estimatorspari a 80. - Cross validation a 3 fold (
cv) - Usa
roc_aucper valutare i modelli - Usa 4 core per l'elaborazione in parallelo (
n_jobs) - Assicurati di effettuare il refit del modello migliore e di restituire gli score di training
- Esegui il campionamento di soli 5 modelli per efficienza (
n_iter)
Gli insiemi di dati X_train e y_train sono già caricati per te.
Ricorda: per estrarre gli iperparametri scelti, li trovi in cv_results_, con una colonna per ogni iperparametro. Per esempio, la colonna per l'iperparametro criterion è param_criterion.
Questo esercizio fa parte del corso
Ottimizzazione degli iperparametri in Python
Istruzioni dell'esercizio
- Crea una griglia di iperparametri come specificato sopra.
- Crea un oggetto
RandomizedSearchCVcome descritto sopra. - Esegui il fit dell'oggetto
RandomizedSearchCVsui dati di training. - Fai l'indicizzazione in
cv_results_per stampare i valori scelti dal processo di modellazione per entrambi gli iperparametri (max_depthemax_features).
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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_[____])