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

bookImplementierung 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ˉ\bar x (Mittelwert) und ss (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ˉ\bar x und ss 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ˉ\bar x und ss 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.

123456789101112131415161718192021222324252627
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') # 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)
copy
question mark

Welche der folgenden Klassennamen aus scikit-learn werden verwendet, um den k-Nearest Neighbors-Klassifikator zu implementieren und Merkmale bei der Vorbereitung der Daten für k-NN zu skalieren?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 4

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 4.17

bookImplementierung 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ˉ\bar x (Mittelwert) und ss (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ˉ\bar x und ss 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ˉ\bar x und ss 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.

123456789101112131415161718192021222324252627
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') # 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)
copy
question mark

Welche der folgenden Klassennamen aus scikit-learn werden verwendet, um den k-Nearest Neighbors-Klassifikator zu implementieren und Merkmale bei der Vorbereitung der Daten für k-NN zu skalieren?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 4
some-alt