K-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.
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:
- Für eine neue Instanz werden die k nächsten Trainingsinstanzen anhand der Merkmalsähnlichkeit identifiziert. Diese werden als Nachbarn bezeichnet.
- 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.
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.
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 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.
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 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-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:
- Für eine neue Instanz werden die k nächsten Trainingsinstanzen anhand der Merkmalsähnlichkeit identifiziert. Diese werden als Nachbarn bezeichnet.
- 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.
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.
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 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.
Danke für Ihr Feedback!