Kursinhalt
Klassifikation mit Python
Klassifikation mit Python
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 x̄ und s einfach ignorieren und fortfahren :)
Sie sollten x̄ und s auf dem Trainingssatz berechnen (entweder mit .fit()
oder .fit_transform()
) und dasselbe x̄ 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.
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)
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.
Danke für Ihr Feedback!