Implementierung von K-NN
KNeighborsClassifier
Die Implementierung von k-Nearest Neighbors ist recht unkompliziert. Es ist lediglich erforderlich, 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 sollten xˉ (Mittelwert) und s (Standardabweichung) im Trainingsdatensatz mit der Methode .fit() oder .fit_transform() berechnen. Dieser Schritt stellt sicher, dass die Skalierungsparameter aus den Trainingsdaten abgeleitet werden.
Wenn Sie einen Testdatensatz zur Vorhersage haben, müssen Sie dieselben xˉ und s verwenden, um diese Daten mit .transform() vorzubereiten. Diese Konsistenz ist entscheidend, da sie sicherstellt, dass die Testdaten auf die gleiche Weise wie die Trainingsdaten skaliert werden und somit die Integrität der Modellvorhersagen erhalten bleibt.
# Importing the class
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
# Calculating x̄ and s and scaling `X_train`
X_train_scaled = scaler.fit_transform(X_train)
# Scaling `X_test` with x̄ and s calculated in the previous line
X_test_scaled = scaler.transform(X_test)
Wenn Sie unterschiedliche xˉ und s für Trainings- und Testdatensatz verwenden, werden Ihre Vorhersagen wahrscheinlich schlechter.
Beispiel
Wir betrachten ein einfaches Beispiel, bei dem vorhergesagt werden soll, ob eine Person Star Wars VI mögen wird, basierend auf ihren Bewertungen für Star Wars IV und V. Die Daten stammen aus The Movies Dataset mit zusätzlicher Vorverarbeitung. Eine Person gilt als Fan von Star Wars VI, wenn sie diesen mit mehr als 4 (von 5) bewertet.
Nach dem Training unseres Modells treffen wir Vorhersagen für zwei Personen aus dem Testdatensatz. Die erste Person bewertet Star Wars IV und V jeweils mit 5 und 5, die zweite Person 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 ist lediglich erforderlich, 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 sollten xˉ (Mittelwert) und s (Standardabweichung) im Trainingsdatensatz mit der Methode .fit() oder .fit_transform() berechnen. Dieser Schritt stellt sicher, dass die Skalierungsparameter aus den Trainingsdaten abgeleitet werden.
Wenn Sie einen Testdatensatz zur Vorhersage haben, müssen Sie dieselben xˉ und s verwenden, um diese Daten mit .transform() vorzubereiten. Diese Konsistenz ist entscheidend, da sie sicherstellt, dass die Testdaten auf die gleiche Weise wie die Trainingsdaten skaliert werden und somit die Integrität der Modellvorhersagen erhalten bleibt.
# Importing the class
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
# Calculating x̄ and s and scaling `X_train`
X_train_scaled = scaler.fit_transform(X_train)
# Scaling `X_test` with x̄ and s calculated in the previous line
X_test_scaled = scaler.transform(X_test)
Wenn Sie unterschiedliche xˉ und s für Trainings- und Testdatensatz verwenden, werden Ihre Vorhersagen wahrscheinlich schlechter.
Beispiel
Wir betrachten ein einfaches Beispiel, bei dem vorhergesagt werden soll, ob eine Person Star Wars VI mögen wird, basierend auf ihren Bewertungen für Star Wars IV und V. Die Daten stammen aus The Movies Dataset mit zusätzlicher Vorverarbeitung. Eine Person gilt als Fan von Star Wars VI, wenn sie diesen mit mehr als 4 (von 5) bewertet.
Nach dem Training unseres Modells treffen wir Vorhersagen für zwei Personen aus dem Testdatensatz. Die erste Person bewertet Star Wars IV und V jeweils mit 5 und 5, die zweite Person 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!