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, setzeCauf einen Bereich von50Gleitkommawerten zwischen0.1und1.0und setzeclass_weightentweder auf"balanced"oder auf ein Dictionary mit0:0.8, 1:0.2. - Erstelle das RandomizedSearchCV-Objekt, übergib das Modell und die Parameter und setze
cvgleichkf. - Passe
logreg_cvan die Trainingsdaten an. - Gib die besten Parameter und die Korrektklassifikationsrate des Modells aus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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(____.____))