Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen K-Nachbarn-Klassifikator | Modellierung
ML-Einführung Mit Scikit-Learn

bookK-Nachbarn-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.

Note
Hinweis

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-nearest neighbors (k-NN) ist ein Machine-Learning-Algorithmus, der Vorhersagen trifft, indem er die ähnlichsten Instanzen im Trainingsdatensatz identifiziert.

KNeighborsClassifier ist die Scikit-learn-Implementierung dieses Algorithmus für Klassifikationsaufgaben. Der Vorhersageprozess funktioniert wie folgt:

  1. Für eine neue Instanz werden die k nächsten Trainingsinstanzen anhand der Merkmalsähnlichkeit identifiziert. Diese werden als Nachbarn bezeichnet.
  2. Die am häufigsten vorkommende Klasse unter den k Nachbarn wird bestimmt. Diese Klasse wird als Vorhersage für die neue Instanz verwendet.

Der Parameter k gibt an, wie viele Nachbarn berücksichtigt werden. Standardmäßig ist er auf 5 gesetzt. Unterschiedliche Werte für k können zu unterschiedlichen Vorhersagen führen, weshalb es sich um einen Hyperparameter handelt — ein vor dem Training gewählter Parameter, der das Modellverhalten direkt beeinflusst.

Das Ausprobieren verschiedener Werte für k und die Auswahl desjenigen, der die beste Leistung erzielt, wird als Hyperparameter-Tuning bezeichnet. Dieser Prozess ist entscheidend für die Optimierung des Modells.

KNeighborsClassifier während .fit()

Im Gegensatz zu den meisten ML-Modellen speichert der KNeighborsClassifier während des Trainings lediglich das Trainingsset. Obwohl das Training somit keine Zeit in Anspruch nimmt, ist das Aufrufen von .fit(X, y) obligatorisch, damit das Trainingsset gespeichert wird.

KNeighborsClassifier während .predict()

Während der Vorhersage sucht der KNeighborsClassifier für jede neue Instanz gierig die k nächsten Nachbarn.

Note
Hinweis

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, wodurch der KNeighborsClassifier genauere Vorhersagen treffen kann.

KNeighborsClassifier Programmierbeispiel

Erstellen eines KNeighborsClassifier, Training und Bewertung der Genauigkeit mit der Methode .score(). Der Datensatz in der .csv-Datei ist bereits vorverarbeitet.

Die Anzahl der Nachbarn (k) wird beim Initialisieren des n_neighbors mit dem Argument KNeighborsClassifier festgelegt. Testen Sie sowohl den Standardwert 5 als auch 1.

12345678910111213
import 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))
copy

Die Ergebnisse zeigen eine hohe Genauigkeit, sogar perfekte Werte mit 1-nächster Nachbar.

Diese Werte sind jedoch nicht zuverlässig, da die Bewertung auf dem Trainingsdatensatz erfolgte—also denselben Daten, auf denen das Modell trainiert wurde. In diesem Fall sagt das Modell lediglich Instanzen voraus, die es bereits gesehen hat.

Um die Leistung korrekt zu beurteilen, muss das Modell mit Daten bewertet werden, die es zuvor nicht gesehen hat.

question mark

Wie trifft der KNeighborsClassifier Vorhersagen für eine neue Instanz?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 3.13

bookK-Nachbarn-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.

Note
Hinweis

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-nearest neighbors (k-NN) ist ein Machine-Learning-Algorithmus, der Vorhersagen trifft, indem er die ähnlichsten Instanzen im Trainingsdatensatz identifiziert.

KNeighborsClassifier ist die Scikit-learn-Implementierung dieses Algorithmus für Klassifikationsaufgaben. Der Vorhersageprozess funktioniert wie folgt:

  1. Für eine neue Instanz werden die k nächsten Trainingsinstanzen anhand der Merkmalsähnlichkeit identifiziert. Diese werden als Nachbarn bezeichnet.
  2. Die am häufigsten vorkommende Klasse unter den k Nachbarn wird bestimmt. Diese Klasse wird als Vorhersage für die neue Instanz verwendet.

Der Parameter k gibt an, wie viele Nachbarn berücksichtigt werden. Standardmäßig ist er auf 5 gesetzt. Unterschiedliche Werte für k können zu unterschiedlichen Vorhersagen führen, weshalb es sich um einen Hyperparameter handelt — ein vor dem Training gewählter Parameter, der das Modellverhalten direkt beeinflusst.

Das Ausprobieren verschiedener Werte für k und die Auswahl desjenigen, der die beste Leistung erzielt, wird als Hyperparameter-Tuning bezeichnet. Dieser Prozess ist entscheidend für die Optimierung des Modells.

KNeighborsClassifier während .fit()

Im Gegensatz zu den meisten ML-Modellen speichert der KNeighborsClassifier während des Trainings lediglich das Trainingsset. Obwohl das Training somit keine Zeit in Anspruch nimmt, ist das Aufrufen von .fit(X, y) obligatorisch, damit das Trainingsset gespeichert wird.

KNeighborsClassifier während .predict()

Während der Vorhersage sucht der KNeighborsClassifier für jede neue Instanz gierig die k nächsten Nachbarn.

Note
Hinweis

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, wodurch der KNeighborsClassifier genauere Vorhersagen treffen kann.

KNeighborsClassifier Programmierbeispiel

Erstellen eines KNeighborsClassifier, Training und Bewertung der Genauigkeit mit der Methode .score(). Der Datensatz in der .csv-Datei ist bereits vorverarbeitet.

Die Anzahl der Nachbarn (k) wird beim Initialisieren des n_neighbors mit dem Argument KNeighborsClassifier festgelegt. Testen Sie sowohl den Standardwert 5 als auch 1.

12345678910111213
import 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))
copy

Die Ergebnisse zeigen eine hohe Genauigkeit, sogar perfekte Werte mit 1-nächster Nachbar.

Diese Werte sind jedoch nicht zuverlässig, da die Bewertung auf dem Trainingsdatensatz erfolgte—also denselben Daten, auf denen das Modell trainiert wurde. In diesem Fall sagt das Modell lediglich Instanzen voraus, die es bereits gesehen hat.

Um die Leistung korrekt zu beurteilen, muss das Modell mit Daten bewertet werden, die es zuvor nicht gesehen hat.

question mark

Wie trifft der KNeighborsClassifier Vorhersagen für eine neue Instanz?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 2
some-alt