RandomSearchCV en Scikit Learn
Vamos a practicar cómo construir un objeto RandomizedSearchCV usando Scikit Learn.
La cuadrícula de hiperparámetros debe incluir max_depth (todos los valores entre 5 y 25, ambos inclusive) y max_features ('auto' y 'sqrt').
Las opciones deseadas para el objeto RandomizedSearchCV son:
- Un estimador RandomForestClassifier con
n_estimatorsigual a 80. - Validación cruzada de 3 particiones (
cv) - Usar
roc_aucpara evaluar los modelos - Usar 4 núcleos para el procesamiento en paralelo (
n_jobs) - Asegúrate de reajustar el mejor modelo y devolver las puntuaciones de entrenamiento
- Muestrear solo 5 combinaciones por eficiencia (
n_iter)
Los conjuntos de datos X_train y y_train ya están cargados.
Recuerda que, para extraer los hiperparámetros elegidos, se encuentran en cv_results_ con una columna por hiperparámetro. Por ejemplo, la columna para el hiperparámetro criterion sería param_criterion.
Este ejercicio forma parte del curso
Ajuste de hiperparámetros en Python
Instrucciones del ejercicio
- Crea una cuadrícula de hiperparámetros según lo especificado arriba.
- Crea un objeto
RandomizedSearchCVcomo se describe en el contexto anterior. - Ajusta el objeto
RandomizedSearchCVa los datos de entrenamiento. - Indexa en el objeto
cv_results_para imprimir los valores elegidos por el proceso de modelado para ambos hiperparámetros (max_depthymax_features).
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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_[____])