K-Neighbors-Klassifikator
Beim Erstellen des finalen Schätzers in einer Pipeline wurde das Modell KNeighborsClassifier ausgewählt. Dieses Kapitel bietet eine kurze Erklärung, wie der Algorithmus funktioniert.
Wie Modelle funktionieren, ist kein Hauptthema dieses Kurses. Es ist daher in Ordnung, wenn Ihnen etwas unklar erscheint. Ausführlichere Erklärungen finden Sie in anderen Kursen wie Linear Regression with Python oder Classification with Python.
k-Nearest Neighbors
k-NN sagt die Klasse einer neuen Instanz voraus, indem die k ähnlichsten Trainingsbeispiele betrachtet werden.
KNeighborsClassifier implementiert dies in Scikit-learn.
- Für einen neuen Punkt werden die k nächsten Nachbarn anhand der Merkmalsähnlichkeit ermittelt.
- Die häufigste Klasse unter diesen wird als Vorhersage verwendet.
k ist ein Hyperparameter (Standardwert = 5). Unterschiedliche Werte verändern das Modellverhalten, daher ist das Abstimmen von k wichtig.
KNeighborsClassifier während .fit()
Im Gegensatz zu vielen anderen Algorithmen speichert der KNeighborsClassifier lediglich die Trainingsdaten.
Dennoch ist der Aufruf von .fit(X, y) erforderlich, damit das Modell weiß, auf welchen Datensatz es sich bei der Vorhersage beziehen soll.
KNeighborsClassifier während .predict()
Während der Vorhersage sucht der Klassifikator für jede Instanz nach den k nächsten Nachbarn. Im visuellen Beispiel werden nur zwei Merkmale dargestellt; das Hinzufügen weiterer Merkmale verbessert in der Regel die Klassentrennung und die Vorhersagegenauigkeit.
In den obigen GIFs werden nur zwei Merkmale, 'body_mass_g' und 'culmen_depth_mm', verwendet, da die Visualisierung höherdimensionaler Plots schwierig ist. Das Hinzufügen weiterer Merkmale wird dem Modell wahrscheinlich helfen, die grünen und roten Datenpunkte besser zu trennen, sodass der KNeighborsClassifier genauere Vorhersagen treffen kann.
KNeighborsClassifier Programmierbeispiel
Es ist möglich, einen Klassifikator zu erstellen, ihn zu trainieren und seine Genauigkeit mit .score() zu überprüfen.
Das Argument n_neighbors steuert k—probiere sowohl 5 als auch 1 aus.
12345678910111213import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
Die Verwendung von k=1 kann eine perfekte Genauigkeit liefern, dies ist jedoch irreführend, da die Auswertung auf dem Trainingsdatensatz erfolgte.
Um die tatsächliche Leistung zu messen, sollte das Modell immer auf unbekannten Daten getestet werden.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain why using k=1 might give perfect accuracy on the training set?
How should I properly evaluate the performance of a k-NN model?
What does the `.score()` method actually measure in this context?
Awesome!
Completion rate improved to 3.13
K-Neighbors-Klassifikator
Swipe um das Menü anzuzeigen
Beim Erstellen des finalen Schätzers in einer Pipeline wurde das Modell KNeighborsClassifier ausgewählt. Dieses Kapitel bietet eine kurze Erklärung, wie der Algorithmus funktioniert.
Wie Modelle funktionieren, ist kein Hauptthema dieses Kurses. Es ist daher in Ordnung, wenn Ihnen etwas unklar erscheint. Ausführlichere Erklärungen finden Sie in anderen Kursen wie Linear Regression with Python oder Classification with Python.
k-Nearest Neighbors
k-NN sagt die Klasse einer neuen Instanz voraus, indem die k ähnlichsten Trainingsbeispiele betrachtet werden.
KNeighborsClassifier implementiert dies in Scikit-learn.
- Für einen neuen Punkt werden die k nächsten Nachbarn anhand der Merkmalsähnlichkeit ermittelt.
- Die häufigste Klasse unter diesen wird als Vorhersage verwendet.
k ist ein Hyperparameter (Standardwert = 5). Unterschiedliche Werte verändern das Modellverhalten, daher ist das Abstimmen von k wichtig.
KNeighborsClassifier während .fit()
Im Gegensatz zu vielen anderen Algorithmen speichert der KNeighborsClassifier lediglich die Trainingsdaten.
Dennoch ist der Aufruf von .fit(X, y) erforderlich, damit das Modell weiß, auf welchen Datensatz es sich bei der Vorhersage beziehen soll.
KNeighborsClassifier während .predict()
Während der Vorhersage sucht der Klassifikator für jede Instanz nach den k nächsten Nachbarn. Im visuellen Beispiel werden nur zwei Merkmale dargestellt; das Hinzufügen weiterer Merkmale verbessert in der Regel die Klassentrennung und die Vorhersagegenauigkeit.
In den obigen GIFs werden nur zwei Merkmale, 'body_mass_g' und 'culmen_depth_mm', verwendet, da die Visualisierung höherdimensionaler Plots schwierig ist. Das Hinzufügen weiterer Merkmale wird dem Modell wahrscheinlich helfen, die grünen und roten Datenpunkte besser zu trennen, sodass der KNeighborsClassifier genauere Vorhersagen treffen kann.
KNeighborsClassifier Programmierbeispiel
Es ist möglich, einen Klassifikator zu erstellen, ihn zu trainieren und seine Genauigkeit mit .score() zu überprüfen.
Das Argument n_neighbors steuert k—probiere sowohl 5 als auch 1 aus.
12345678910111213import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
Die Verwendung von k=1 kann eine perfekte Genauigkeit liefern, dies ist jedoch irreführend, da die Auswertung auf dem Trainingsdatensatz erfolgte.
Um die tatsächliche Leistung zu messen, sollte das Modell immer auf unbekannten Daten getestet werden.
Danke für Ihr Feedback!