KNeighborsClassifier
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 also 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-nächste Nachbarn
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 gefunden.
- Die häufigste Klasse unter ihnen wird als Vorhersage verwendet.
k ist ein Hyperparameter (Standard = 5). Unterschiedliche Werte verändern das Modellverhalten, daher ist das Tuning von k wichtig.
KNeighborsClassifier während .fit()
Im Gegensatz zu vielen anderen Algorithmen speichert der KNeighborsClassifier lediglich die Trainingsdaten.
Das Aufrufen von .fit(X, y) ist dennoch 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 die k nächsten Nachbarn. Im gezeigten 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 Diagramme schwierig ist. Die Einbeziehung zusätzlicher Merkmale wird dem Modell wahrscheinlich helfen, die grünen und roten Datenpunkte besser zu trennen, wodurch der KNeighborsClassifier genauere Vorhersagen treffen kann.
KNeighborsClassifier Codebeispiel
Erstellung eines Klassifikators, Training und Überprüfung der Genauigkeit mit .score().
Das Argument n_neighbors steuert k—teste sowohl 5 als auch 1.
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, ist jedoch irreführend, da die Auswertung auf dem Trainingsdatensatz erfolgte.
Um die tatsächliche Leistung zu messen, sollte das Modell immer an 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