Herausforderung: Auswahl des optimalen K-Werts
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
Großartig!
Completion Rate verbessert auf 3.33
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