StandardScaler
Teil des Abschnitts Statistik für ML der Machine Learning-Journey von Coddy. Lektion 50 von 64.
Ein Modell muss jede neue Stichprobe genau so skalieren wie seine Trainingsdaten. Der StandardScaler von scikit-learn standardisiert die Daten und merkt sich, wie:
Im Code werden für jeden Auftrag die Anzahl der gereinigten Fenster und die benötigten Minuten angegeben:
from sklearn.preprocessing import StandardScaler
X_train = np.array([[2, 8], [10, 25], [6, 20], [14, 35]])
scaler = StandardScaler()
scaler.fit(X_train)
X_new = np.array([[8, 30]]) # eine Stichprobe: eine Tabelle mit einer Zeile
print(np.round(scaler.transform(X_new), 2))Dies gibt Folgendes aus:
[[0. 0.82]]fit lernt den Mittelwert und die Standardabweichung jeder Spalte (Division durch n, wie bei np.std), die in scaler.mean_ und scaler.scale_ gespeichert werden. transform wendet sie an.
Passe den Scaler niemals an neuen Daten an: Der Mittelwert wäre dann der Mittelwert der Daten selbst und würde zu [[0. 0.]] werden. Auf Trainingsdaten führt fit_transform beides in einem Aufruf aus.
Aufgabe
MittelEin Sortierer hat anhand der Avocados in X_train gelernt: Gewicht, Festigkeit und Tage seit der Ernte. Das Programm liest eine neue Avocado in die einzeilige Tabelle new_avocado ein, aber die Skalierung im Startcode gibt für jede Avocado [[0. 0. 0.]] aus.
- Behebe das Problem: Skaliere die neue Avocado mit den Mittelwerten und Standardabweichungen der Trainingsdaten.
- Zähle ihre Messwerte, die um mehr als 2 Standardabweichungen vom Trainingsmittelwert abweichen, in beide Richtungen, und gib das Ergebnis wie unten aus.
Für eine weitere Charge:
New avocado: [[2.98 0. 0.09]]
1 of 3 measurements are more than 2 std from the training avocadosProbier es selbst
import numpy as np
from sklearn.preprocessing import StandardScaler
# Avocados für das Training, jeweils eine Zeile: Gewicht in Gramm, Festigkeit von 1 bis 10, Tage seit der Ernte
X_train = np.array([[210, 8, 2],
[185, 5, 6],
[240, 7, 3],
[170, 3, 9],
[225, 6, 5],
[195, 4, 7]])
# Eine neue Avocado auf dem Förderband
weight = float(input())
firmness = float(input())
days = float(input())
new_avocado = np.array([[weight, firmness, days]])
# Dies gibt für jede Avocado [[0. 0. 0.]] aus: Behebe den Fehler
scaler = StandardScaler()
scaled = scaler.fit_transform(new_avocado)
print("New avocado:", np.round(scaled, 2))
# 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 Statistik für ML
1Lage und Streuung
Mittelwert und MedianPerzentile und QuartileVarianz und StandardabweichungStichprobe oder Grundgesamtheit?Der häufigste WertRückblick: Lieferzeiten4Stichproben und Grundgesamtheiten
Grundgesamtheit und StichprobeStichprobenmittelwerte variierenDie StichprobenverteilungGrößere Stichproben, weniger ZufallRückblick: Eine Stadt befragen2Verteilungen
DichtehistogrammeDatenverteilungenDie NormalverteilungskurveDie 68-95-99,7-RegelZ-WerteRückblick: Akkulaufzeit3Wahrscheinlichkeit durch Simulation
Wahrscheinlichkeit als HäufigkeitDas Gesetz der großen ZahlenAugensummen beim WürfelnErwartungswertBedingte WahrscheinlichkeitRückblick: Gewinnchancen am Würfelstand6Zusammenhänge
Streudiagramme lesenKorrelationKorrelationsmatrixKorrelations-HeatmapsKorrelation ist keine KausalitätRückblick: Eiscreme und Sonne9Merkmalsskalierung
Warum Merkmale skalierenMin-Max-SkalierungStandardisierungStandardScalerRückblick: KletterpartnerÜbe selbstständig: Online-Python-Compiler