Hyperparameter-Optimierung mit RandomizedSearchCV
Wie du gesehen hast, kann GridSearchCV
sehr rechenintensiv sein, vor allem bei der Suche in einem großen Hyperparameterraum. In solchen Fällen kannst du RandomizedSearchCV
verwenden, um eine feste Anzahl von Hyperparameterwerten aus vorgegebenen Wahrscheinlichkeitsverteilungen zu testen.
Die Trainings- und Testmengen von diabetes_df
wurden bereits als X_train
, X_test
, y_train
und y_test
geladen. Die Zielvariable ist "diabetes"
. Ein Modell für die logistische Regression wurde erstellt und als logreg
gespeichert und ein KFold
-Objekt wurde als kf
gespeichert.
Du sollst nun eine Reihe von Hyperparametern festlegen und RandomizedSearchCV
verwenden (wurde aus sklearn.model_selection
importiert), um nach optimalen Hyperparametern innerhalb dieser Reihe zu suchen.
Diese Übung ist Teil des Kurses
Überwachtes Lernen mit scikit-learn
Anleitung zur Übung
- Erstelle
params
, füge"l1"
und"l2"
alspenalty
-Werte hinzu, setzeC
auf einen Bereich von50
Gleitkommawerten zwischen0.1
und1.0
und setzeclass_weight
entweder auf"balanced"
oder auf ein Dictionary mit0:0.8, 1:0.2
. - Erstelle das RandomizedSearchCV-Objekt, übergib das Modell und die Parameter und setze
cv
gleichkf
. - Passe
logreg_cv
an die Trainingsdaten an. - Gib die besten Parameter und die Korrektklassifikationsrate des Modells aus.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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(____.____))