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 eines finalen Schätzers für eine Pipeline haben wir das Modell KNeighborsClassifier verwendet. In diesem Kapitel wird kurz erklärt, wie es funktioniert.

k-Nearest Neighbors

k-nearest neighbors ist ein ML-Algorithmus, der auf dem Auffinden der ähnlichsten Instanzen im Trainingsdatensatz basiert, um eine Vorhersage zu treffen.

KNeighborsClassifier ist eine scikit-learn-Implementierung dieses Algorithmus für Klassifikationsaufgaben. So erfolgt die Vorhersage:

  1. Für eine neue Instanz werden die k nächsten (basierend auf den Merkmalen) Instanzen des Trainingsdatensatzes gefunden. Diese k Instanzen werden als Nachbarn bezeichnet;
  2. Die am häufigsten vorkommende Klasse unter den k Nachbarn wird als Vorhersage für die neue Instanz verwendet.

k ist die Anzahl der zu berücksichtigenden Nachbarn. Diese Zahl muss beim Initialisieren des Modells angegeben werden. Standardmäßig ist k auf 5 gesetzt.

Mit unterschiedlichen k-Werten liefert das Modell unterschiedliche Vorhersagen. Dies wird als Hyperparameter bezeichnet — ein Parameter, der im Voraus festgelegt werden muss und das Vorhersageverhalten des Modells beeinflussen kann.

Sie können verschiedene k-Werte ausprobieren und den optimalen Wert für Ihre Aufgabe bestimmen. Dieser Prozess der Anpassung von Hyperparametern wird als Hyperparameter-Tuning bezeichnet und kann dazu beitragen, die Leistung Ihres Modells zu optimieren.

KNeighborsClassifier während .fit()

Im Gegensatz zu den meisten ML-Modellen speichert der KNeighborsClassifier während des Trainings lediglich den Trainingsdatensatz. Auch wenn das Training keine Zeit in Anspruch nimmt, ist das Aufrufen von .fit(X, y) zwingend erforderlich, damit das Modell den Trainingsdatensatz speichert.

KNeighborsClassifier während .predict()

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

KNeighborsClassifier Codebeispiel

Erstellung eines KNeighborsClassifier, Training und Ermittlung der Genauigkeit mit der Methode .score(). Zur Vereinfachung sind die Daten in der .csv-Datei bereits vollständig vorverarbeitet.

Um das k festzulegen, wird das Argument n_neighbors im Konstruktor des KNeighborsClassifier verwendet. Es werden die Werte 5 (Standardwert) und 1 ausprobiert.

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

Wir haben eine ziemlich gute Genauigkeit erreicht! Mit einem 1-nächsten Nachbarn ist die Genauigkeit sogar perfekt.

Sollten wir diesen Werten jedoch vertrauen? Nein, denn wir haben das Modell auf dem Trainingsdatensatz bewertet – also auf denselben Daten, mit denen es trainiert wurde. Natürlich wird es die bereits gesehenen Instanzen gut vorhersagen.

Um wirklich zu verstehen, wie gut das Modell funktioniert, sollten wir es auf Instanzen bewerten, die das Modell noch nie zuvor 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 eines finalen Schätzers für eine Pipeline haben wir das Modell KNeighborsClassifier verwendet. In diesem Kapitel wird kurz erklärt, wie es funktioniert.

k-Nearest Neighbors

k-nearest neighbors ist ein ML-Algorithmus, der auf dem Auffinden der ähnlichsten Instanzen im Trainingsdatensatz basiert, um eine Vorhersage zu treffen.

KNeighborsClassifier ist eine scikit-learn-Implementierung dieses Algorithmus für Klassifikationsaufgaben. So erfolgt die Vorhersage:

  1. Für eine neue Instanz werden die k nächsten (basierend auf den Merkmalen) Instanzen des Trainingsdatensatzes gefunden. Diese k Instanzen werden als Nachbarn bezeichnet;
  2. Die am häufigsten vorkommende Klasse unter den k Nachbarn wird als Vorhersage für die neue Instanz verwendet.

k ist die Anzahl der zu berücksichtigenden Nachbarn. Diese Zahl muss beim Initialisieren des Modells angegeben werden. Standardmäßig ist k auf 5 gesetzt.

Mit unterschiedlichen k-Werten liefert das Modell unterschiedliche Vorhersagen. Dies wird als Hyperparameter bezeichnet — ein Parameter, der im Voraus festgelegt werden muss und das Vorhersageverhalten des Modells beeinflussen kann.

Sie können verschiedene k-Werte ausprobieren und den optimalen Wert für Ihre Aufgabe bestimmen. Dieser Prozess der Anpassung von Hyperparametern wird als Hyperparameter-Tuning bezeichnet und kann dazu beitragen, die Leistung Ihres Modells zu optimieren.

KNeighborsClassifier während .fit()

Im Gegensatz zu den meisten ML-Modellen speichert der KNeighborsClassifier während des Trainings lediglich den Trainingsdatensatz. Auch wenn das Training keine Zeit in Anspruch nimmt, ist das Aufrufen von .fit(X, y) zwingend erforderlich, damit das Modell den Trainingsdatensatz speichert.

KNeighborsClassifier während .predict()

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

KNeighborsClassifier Codebeispiel

Erstellung eines KNeighborsClassifier, Training und Ermittlung der Genauigkeit mit der Methode .score(). Zur Vereinfachung sind die Daten in der .csv-Datei bereits vollständig vorverarbeitet.

Um das k festzulegen, wird das Argument n_neighbors im Konstruktor des KNeighborsClassifier verwendet. Es werden die Werte 5 (Standardwert) und 1 ausprobiert.

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

Wir haben eine ziemlich gute Genauigkeit erreicht! Mit einem 1-nächsten Nachbarn ist die Genauigkeit sogar perfekt.

Sollten wir diesen Werten jedoch vertrauen? Nein, denn wir haben das Modell auf dem Trainingsdatensatz bewertet – also auf denselben Daten, mit denen es trainiert wurde. Natürlich wird es die bereits gesehenen Instanzen gut vorhersagen.

Um wirklich zu verstehen, wie gut das Modell funktioniert, sollten wir es auf Instanzen bewerten, die das Modell noch nie zuvor 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