Skalierung für Nachbarn
Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 9 von 58.
k-NN misst die Entfernung, daher überstimmt ein Merkmal mit großen Zahlen den Rest, wie in Abschnitt 2 gewarnt wurde. Hier überdeckt die Entfernung zum Fluss in Metern die Höhenlage:
Skaliere zuerst. Trainiere den Skalierer nur anhand der Trainingszeilen und transformiere anschließend beide Datensätze:
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
X_test_s = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_s, y_train)
print(model.score(X_test_s, y_test))Das gibt 0.925 aus, gegenüber 0.6. Die Testzeilen bleiben ungesehen: Der Scaler lernt nichts aus ihnen.
Aufgabe
EinfachEin intelligenter Stromzähler errät anhand der Leistung (Watt) und der Laufzeit (Minuten) das gerade laufende Gerät in meter.csv. Das Starterprogramm liest k ein und gibt die Genauigkeit von k-NN mit den unverarbeiteten Merkmalen aus.
- Trainiere einen
StandardScalermit den Trainingszeilen und transformiere beide Datensätze. - Trainiere ein k-NN-Modell mit demselben k anhand der skalierten Zeilen; gib seine Genauigkeit mit 3 Dezimalstellen aus.
- Gib den Zuwachs aus.
Für einen anderen Haushalt und k = 5:
Unscaled accuracy: 0.65
Scaled accuracy: 0.875
Scaling gains 0.225Probier es selbst
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
# Eine Zeile pro Betriebsdurchlauf eines Geräts: Leistung in Watt, Laufzeit in Minuten, welches Gerät
meter = pd.read_csv("meter.csv")
X = meter[["watts", "minutes"]]
y = meter["appliance"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
k = int(input())
# k-NN auf den unskalierten Merkmalen
raw_model = KNeighborsClassifier(n_neighbors=k)
raw_model.fit(X_train, y_train)
raw = raw_model.score(X_test, y_test)
print(f"Unscaled accuracy: {round(raw, 3)}")
# Schreibe deinen Code unten
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Überwachtes Lernen
1Dein erstes Modell
Aus Beispielen lernenTrainings- und TestdatensätzeAnpassen und VorhersagenEin Modell bewertenRückblick: Saatgutsortierer4Logistische Regression
Ja-Nein-VorhersagenDie EntscheidungsschwelleGewichte als IndizienMehrere KlassenRückblick: Spamfilter2Nächste Nachbarn
So entscheidet k-NNk wählenEntscheidungsgrenzenSkalierung für NachbarnRückblick: Wein-Nachbarn5Klassifikatoren bewerten
Die KonfusionsmatrixPräzision und TrefferquoteDer F1-ScoreUnausgewogene KlassenROC-KurvenRückblick: Screeningtest3Lineare Regression
Zahlen vorhersagenMehrere MerkmaleFehler messenResiduenplotsZusammenfassung: Fahrradverleih6Entscheidungsbäume
Bäume stellen FragenEinen Baum lesenBaumtiefeMerkmalswichtigkeitRückblick: Kreditentscheidungen9Ensembleverfahren
Random ForestsWarum Random Forests funktionierenGradient BoostingRückblick: Förster des Waldes12Abschließende Herausforderungen
Diabetes-FortschrittKreditgenehmigungHandgeschriebene ZiffernKundenabwanderungÜbe selbstständig: Online-Python-Compiler