Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Implementierung von k-NN | K-NN Klassifikator
Klassifikation mit Python
course content

Kursinhalt

Klassifikation mit Python

Klassifikation mit Python

1. K-NN Klassifikator
2. Logistische Regression
3. Entscheidungsbaum
4. Random Forest
5. Modelle Vergleichen

book
Implementierung von k-NN

KNeighborsClassifier

Die Implementierung von k-Nearest Neighbors ist ziemlich einfach. Wir müssen nur die Klasse KNeighborsClassifier importieren und verwenden.

Sobald Sie die Klasse importiert und ein Klassenobjekt wie folgt erstellt haben:

Müssen Sie die Trainingsdaten mit der .fit()-Methode übergeben:

Und das war's! Sie können jetzt neue Werte vorhersagen.

Skalierung der Daten

Denken Sie jedoch daran, dass die Daten skaliert werden müssen. Werfen wir einen genaueren Blick auf den StandardScaler, der häufig zum Skalieren der Daten verwendet wird.
StandardScaler zieht einfach den Mittelwert der Stichprobe ab und teilt dann das Ergebnis durch die Standardabweichung der Stichprobe.

Hinweis

Wenn die Begriffe Stichprobenmittelwert und Stichprobenstandardabweichung unbekannt klingen, können Sie unseren Lernkurs Statistik mit Python ansehen. Aber ein Verständnis dafür, wofür diese Zahlen stehen, ist nicht zwingend erforderlich, daher können Sie die Bedeutungen von und s einfach ignorieren und fortfahren :)

Sie sollten und s auf dem Trainingssatz berechnen (entweder mit .fit() oder .fit_transform()) und dasselbe und s verwenden, um die Daten, die Sie vorhersagen, vorzubereiten (mit .transform()). Hier ist ein Beispiel:

Wenn Sie unterschiedliche x̄ und s für den Trainingssatz und neue Instanzen verwenden, werden Ihre Vorhersagen wahrscheinlich schlechter ausfallen.

Beispiel

Um eine k-NN-Klassifikation in Python durchzuführen, müssen Sie KNeighborsClassifier und StandardScaler verwenden. Ihr Code wird folgendermaßen aussehen:

Hier ist ein einfaches Beispiel, bei dem wir versuchen vorherzusagen, ob die Person Star Wars VI mögen wird, basierend auf ihren Bewertungen für Star Wars IV und V. Wir werden die Daten von der URL lesen.

123456789101112131415161718192021
from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler import numpy as np import pandas as pd import warnings warnings.filterwarnings('ignore') df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/starwars_binary.csv') X = df[['StarWars4_rate', 'StarWars5_rate']] # Store feature columns as X y = df['StarWars6'] # Store target column as y (contains 1(liked SW 6) or 0(didn't like SW 6) X_new = np.array([[5, 5], [4.5, 4]]) # 2 insances to predict, ratings [5, 5] and [4.5 for Star Wars IV and 4 for V] # Scale the data scaler = StandardScaler() X_scaled = scaler.fit_transform(X) X_new_scaled = scaler.transform(X_new) # Build a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_scaled, y) y_pred = knn.predict(X_new_scaled) print(y_pred)
copy

Die Daten stammen aus The Movies Dataset mit zusätzlicher Vorverarbeitung. Eine Person gilt als Fan von Star Wars VI, wenn sie es mit mehr als 4/5 bewertet hat.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 4
We're sorry to hear that something went wrong. What happened?
some-alt