Sintonizzazione degli iperparametri con RandomizedSearchCV
Come hai visto, GridSearchCV può essere costoso dal punto di vista computazionale, soprattutto se la ricerca avviene su un ampio spazio di iperparametri. In questo caso, puoi usare RandomizedSearchCV, che testa un numero fisso di impostazioni di iperparametri da distribuzioni di probabilità specificate.
I set di allenamento e di test di diabetes_df sono stati precaricati come X_train. X_test, y_train, e y_test, dove l'obiettivo è "diabetes". È stato creato un modello di regressione logistica e memorizzato come logreg, così come una variabile KFold memorizzata come kf.
Definisci una serie di iperparametri e utilizza RandomizedSearchCV, importato da sklearn.model_selection, per cercare gli iperparametri ottimali tra queste opzioni.
Questo esercizio fa parte del corso
Apprendimento supervisionato con scikit-learn
Istruzioni dell'esercizio
- Crea
params, aggiungendo"l1"e"l2"come valoripenalty, impostandoCsu un intervallo di valori float50tra0.1e1.0, eclass_weightsu"balanced"o su un dizionario contenente0:0.8, 1:0.2. - Crea l'oggetto Randomized Search CV, passandogli il modello e i parametri e impostando
cvcomekf. - Adatta
logreg_cvai dati di formazione. - Stampa i parametri migliori del modello e il punteggio di accuratezza.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Create the parameter space
params = {"penalty": ["____", "____"],
"tol": np.linspace(0.0001, 1.0, 50),
"C": np.linspace(____, ____, ____),
"class_weight": ["____", {0:____, 1:____}]}
# Instantiate the RandomizedSearchCV object
logreg_cv = ____(____, ____, cv=____)
# Fit the data to the model
logreg_cv.____(____, ____)
# Print the tuned parameters and score
print("Tuned Logistic Regression Parameters: {}".format(____.____))
print("Tuned Logistic Regression Best Accuracy Score: {}".format(____.____))