Hyperparameter-tuning met RandomizedSearchCV
Zoals je zag, kan GridSearchCV veel rekenkracht kosten, zeker als je een grote hyperparameterspace doorzoekt. In dat geval kun je RandomizedSearchCV gebruiken, dat een vast aantal hyperparameterinstellingen test op basis van opgegeven kansverdelingen.
Trainings- en testsets uit diabetes_df zijn al voor je ingeladen als X_train, X_test, y_train en y_test, waarbij de target "diabetes" is. Er is een logistiek regressiemodel aangemaakt en opgeslagen als logreg, en een KFold-variabele als kf.
Je definieert een reeks hyperparameters en gebruikt RandomizedSearchCV (geïmporteerd uit sklearn.model_selection) om binnen deze opties te zoeken naar optimale hyperparameters.
Deze oefening maakt deel uit van de cursus
Supervised Learning met scikit-learn
Oefeninstructies
- Maak
paramsaan, voeg"l1"en"l2"toe als waarden voorpenalty, stelCin op een bereik van50floatwaarden tussen0.1en1.0, enclass_weightop ofwel"balanced"of een dictionary met0:0.8, 1:0.2. - Maak het Randomized Search CV-object aan, geef het model en de parameters door en stel
cvgelijk aankf. - Fit
logreg_cvop de trainingsdata. - Print de beste parameters van het model en de nauwkeurigheidsscore.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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(____.____))