Implementierung von K-NN
KNeighborsClassifier
Die Implementierung von k-Nearest Neighbors ist recht unkompliziert. Es genügt, die Klasse KNeighborsClassifier zu importieren und zu verwenden.
Nachdem die Klasse importiert und ein Klassenobjekt wie folgt erstellt wurde:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
müssen die Trainingsdaten mit der Methode .fit() übergeben werden:
knn.fit(X_scaled, y)
Das ist alles! Neue Werte können jetzt vorhergesagt werden.
y_pred = knn.predict(X_new_scaled)
Skalierung der Daten
Es ist jedoch zu beachten, dass die Daten skaliert werden müssen. StandardScaler wird hierfür häufig verwendet:
Sie müssen xˉ und s nur auf dem Trainingsdatensatz mit .fit() oder .fit_transform() berechnen.
Verwenden Sie anschließend .transform() auf dem Testdatensatz, damit beide Datensätze identisch skaliert werden:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Die Verwendung unterschiedlicher Skalierungswerte für Training und Test beeinträchtigt die Vorhersagen.
Beispiel
Es wird vorhergesagt, ob eine Person Star Wars VI mag, basierend auf ihren Bewertungen für Episode IV und V (aus The Movies Dataset).
Nach dem Training werden zwei Nutzer getestet: Einer bewertete IV/V mit 5 und 5, der andere mit 4.5 und 4.
123456789101112131415161718192021222324252627from 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') # Dropping the target column and leaving only features as `X_train` X_train = df.drop('StarWars6', axis=1) # Storing target column as `y_train`, which contains 1 (liked SW 6) or 0 (didn't like SW 6) y_train = df['StarWars6'] # Test set of two people X_test = np.array([[5, 5], [4.5, 4]]) # Scaling the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # Building a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_train, y_train) y_pred = knn.predict(X_test) print(y_pred)
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 4.17
Implementierung von K-NN
Swipe um das Menü anzuzeigen
KNeighborsClassifier
Die Implementierung von k-Nearest Neighbors ist recht unkompliziert. Es genügt, die Klasse KNeighborsClassifier zu importieren und zu verwenden.
Nachdem die Klasse importiert und ein Klassenobjekt wie folgt erstellt wurde:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
müssen die Trainingsdaten mit der Methode .fit() übergeben werden:
knn.fit(X_scaled, y)
Das ist alles! Neue Werte können jetzt vorhergesagt werden.
y_pred = knn.predict(X_new_scaled)
Skalierung der Daten
Es ist jedoch zu beachten, dass die Daten skaliert werden müssen. StandardScaler wird hierfür häufig verwendet:
Sie müssen xˉ und s nur auf dem Trainingsdatensatz mit .fit() oder .fit_transform() berechnen.
Verwenden Sie anschließend .transform() auf dem Testdatensatz, damit beide Datensätze identisch skaliert werden:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Die Verwendung unterschiedlicher Skalierungswerte für Training und Test beeinträchtigt die Vorhersagen.
Beispiel
Es wird vorhergesagt, ob eine Person Star Wars VI mag, basierend auf ihren Bewertungen für Episode IV und V (aus The Movies Dataset).
Nach dem Training werden zwei Nutzer getestet: Einer bewertete IV/V mit 5 und 5, der andere mit 4.5 und 4.
123456789101112131415161718192021222324252627from 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') # Dropping the target column and leaving only features as `X_train` X_train = df.drop('StarWars6', axis=1) # Storing target column as `y_train`, which contains 1 (liked SW 6) or 0 (didn't like SW 6) y_train = df['StarWars6'] # Test set of two people X_test = np.array([[5, 5], [4.5, 4]]) # Scaling the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # Building a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_train, y_train) y_pred = knn.predict(X_test) print(y_pred)
Danke für Ihr Feedback!