RandomSearchCV no Scikit Learn
Vamos praticar a construção de um objeto RandomizedSearchCV usando Scikit Learn.
A grade de hiperparâmetros deve incluir max_depth (todos os valores entre 5 e 25, inclusive) e max_features ('auto' e 'sqrt').
As opções desejadas para o objeto RandomizedSearchCV são:
- Um Estimator RandomForestClassifier com
n_estimatorsigual a 80. - Validação cruzada com 3 folds (
cv) - Usar
roc_aucpara pontuar os modelos - Usar 4 núcleos para processamento em paralelo (
n_jobs) - Garantir que você faça refit do melhor modelo e retorne as pontuações de treinamento
- Amostrar apenas 5 modelos por eficiência (
n_iter)
Os conjuntos de dados X_train e y_train já estão carregados para você.
Lembre-se: para extrair os hiperparâmetros escolhidos, eles estão em cv_results_, com uma coluna por hiperparâmetro. Por exemplo, a coluna do hiperparâmetro criterion seria param_criterion.
Este exercício faz parte do curso
Ajuste de Hiperparâmetros em Python
Instruções do exercício
- Crie uma grade de hiperparâmetros conforme especificado no contexto acima.
- Crie um objeto
RandomizedSearchCVconforme descrito no contexto acima. - Ajuste o objeto
RandomizedSearchCVaos dados de treinamento. - Faça indexação em
cv_results_para imprimir os valores escolhidos pelo processo de modelagem para ambos os hiperparâmetros (max_depthemax_features).
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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_[____])