K-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:
- 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;
- 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.
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))
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.
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
Awesome!
Completion rate improved to 3.13
K-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:
- 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;
- 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.
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))
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.
Danke für Ihr Feedback!