Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Implementierung von K-NN | Abschnitt
Grundlagen des Überwachten Lernens

bookImplementierung von K-NN

KNeighborsClassifier

Die Implementierung von k-Nearest Neighbors ist recht unkompliziert. Es genügt, die Klasse KNeighborsClassifier zu importieren und zu verwenden.

Konstruktor:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – Anzahl der Nachbarn (k). Standardwert ist 5;

Methoden:

  • fit(X, y) – Trainingsdatensatz anpassen;
  • predict(X) – Klasse für X vorhersagen;
  • score(X, y) – Gibt die Genauigkeit für das X, y-Paar zurück.

Nachdem die Klasse importiert und ein Objekt erstellt wurde, zum Beispiel so:

# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)

Muss das Trainingsdatenset mit der Methode .fit() übergeben werden:

knn.fit(X_scaled, y)

Das war's! Nun können neue Werte 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:

Konstruktor:

  • StandardScaler().

Methoden:

  • fit(X) – berechnet xˉ\bar{x} und ss für X;
  • transform(X) – gibt XscaledX_{\text{scaled}} unter Verwendung von xˉ,s\bar{x}, s aus .fit() zurück;
  • fit_transform(X).fit(X) gefolgt von .transform(X).

Sie müssen xˉ\bar x und ss nur auf dem Trainingsdatensatz mit .fit() oder .fit_transform() berechnen. Anschließend verwenden Sie .transform() auf dem Testdatensatz, sodass 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.

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 17

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

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

bookImplementierung 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.

Konstruktor:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – Anzahl der Nachbarn (k). Standardwert ist 5;

Methoden:

  • fit(X, y) – Trainingsdatensatz anpassen;
  • predict(X) – Klasse für X vorhersagen;
  • score(X, y) – Gibt die Genauigkeit für das X, y-Paar zurück.

Nachdem die Klasse importiert und ein Objekt erstellt wurde, zum Beispiel so:

# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)

Muss das Trainingsdatenset mit der Methode .fit() übergeben werden:

knn.fit(X_scaled, y)

Das war's! Nun können neue Werte 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:

Konstruktor:

  • StandardScaler().

Methoden:

  • fit(X) – berechnet xˉ\bar{x} und ss für X;
  • transform(X) – gibt XscaledX_{\text{scaled}} unter Verwendung von xˉ,s\bar{x}, s aus .fit() zurück;
  • fit_transform(X).fit(X) gefolgt von .transform(X).

Sie müssen xˉ\bar x und ss nur auf dem Trainingsdatensatz mit .fit() oder .fit_transform() berechnen. Anschließend verwenden Sie .transform() auf dem Testdatensatz, sodass 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.

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 17
some-alt