Menu
CoddyTech

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:

Ein Diagramm: Die 4 bisherigen Aufträge eines Fensterputzers, X_train, durchlaufen fit und gelangen in einen Scaler, der sich mean_ 8 und 22 sowie scale_ 4.47 und 9.72 merkt. Ein neuer Auftrag, 8 und 30, durchläuft transform unter Verwendung dieser Zahlen und ergibt 0.00 und 0.82

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.

challenge icon

Aufgabe

Mittel

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

  1. Behebe das Problem: Skaliere die neue Avocado mit den Mittelwerten und Standardabweichungen der Trainingsdaten.
  2. 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 avocados

Probier 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
quiz iconTeste dich selbst

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

Übe selbstständig: Online-Python-Compiler