single
Herausforderung: Auswahl des optimalen K-Werts
Swipe um das Menü anzuzeigen
Wie in den vorherigen Kapiteln gezeigt, können die Vorhersagen des Modells je nach Wert von k (Anzahl der Nachbarn) variieren. Beim Erstellen eines k-NN-Modells ist es wichtig, den k-Wert zu wählen, der die beste Leistung erzielt.
Ein gängiger Ansatz ist die Verwendung von Cross-Validation, um die Modellleistung zu bewerten. Es kann eine Schleife ausgeführt und die Cross-Validation-Scores für verschiedene k-Werte berechnet werden, wobei anschließend der Wert mit dem höchsten Score ausgewählt wird. Dies ist die am weitesten verbreitete Methode.
Dafür bietet sklearn ein praktisches Werkzeug: die Klasse GridSearchCV.
Konstruktor:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— das Modellobjekt;param_grid— Dictionary mit den zu durchsuchenden Parameterwerten;scoring— die Metrik zur Bewertung des Cross-Validation-Scores;
cv— die Anzahl der Folds (standardmäßig 5);
Methoden:
fit(X, y)— trainiert die Modelle mit X, y;predict(X)— sagt die Klasse für X voraus;score(X, y)— gibt die Genauigkeit für das X, y-Set zurück;
Attribute:
best_estimator_— Objekt des Modells mit dem höchsten Score;best_score_— der Score desbest_estimator_.
Der Parameter param_grid erwartet ein Dictionary, bei dem die Schlüssel die Parameternamen und die Werte Listen mit auszuprobierenden Optionen sind. Um beispielsweise Werte von 1 bis 99 für n_neighbors zu testen, kann Folgendes geschrieben werden:
param_grid = {'n_neighbors': range(1, 100)}
Durch Aufruf der Methode .fit(X, y) auf dem GridSearchCV-Objekt wird das Parameter-Grid durchsucht, um die besten Parameter zu finden, und anschließend das Modell mit diesen besten Parametern auf dem gesamten Datensatz erneut trainiert.
Der beste Score kann über das Attribut .best_score_ abgerufen werden, und Vorhersagen mit dem optimierten Modell sind über die Methode .predict() möglich. Ebenso kann das beste Modell selbst über das Attribut .best_estimator_ abgerufen werden.
Swipe to start coding
Das Star Wars-Bewertungsdatenset ist als DataFrame in der Variablen df gespeichert.
- Initialisieren Sie
param_gridals ein Dictionary mit dem Parametern_neighborsund den Werten[3, 9, 18, 27]. - Erstellen Sie ein
GridSearchCV-Objekt unter Verwendung vonparam_gridmit 4-facher Kreuzvalidierung, trainieren Sie es und speichern Sie es in der Variablengrid_search. - Rufen Sie das beste Modell aus
grid_searchab und speichern Sie es in der Variablenbest_model. - Rufen Sie die Bewertung des besten Modells ab und speichern Sie sie in der Variablen
best_score.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen