Menu
CoddyTech

Standardisierung

Teil des Abschnitts Statistik für ML der Machine Learning-Journey von Coddy. Lektion 49 von 64.

Viele Modelle lernen am besten, wenn jedes Merkmal bei 0 zentriert ist und eine Streuung von 1 aufweist. Standardisierung bewirkt genau das: Jeder Wert wird zu seinem z-Wert innerhalb seiner Spalte.

Fünf Kürbisse, Gewicht in kg und Breite in cm:

Zwei Punktreihen auf einem Lineal in Standardabweichungen: fünf Kürbisgewichte von 8 bis 40 kg und fünf Breiten von 30 bis 65 cm, jede Reihe auf ihren eigenen Mittelwert bei 0 zentriert, alle zwischen -1.6 und 1.6

Broadcasting standardisiert jede Spalte auf einmal:

pumpkins = np.array([[30, 60],
                     [8, 30],
                     [22, 55],
                     [40, 65],
                     [15, 40]])
z = (pumpkins - pumpkins.mean(axis=0)) / pumpkins.std(axis=0)
print(np.round(z.mean(axis=0), 2))
print(np.round(z.std(axis=0), 2))

Dies gibt Folgendes aus:

[0. 0.]
[1. 1.]

Runde, bevor du prüfst: Un gerundet kann ein Mittelwert von 0 als 2.22044605e-17 ausgegeben werden – ein winziger Rundungsfehler.

Im Gegensatz zu Min-Max gibt es keinen festen Bereich: Die meisten Werte liegen zwischen -2 und 2.

challenge icon

Aufgabe

Mittel

Eine Milchviehfarm entdeckt ungewöhnliche Kühe. Jede Zeile von cows steht für eine Kuh: Milch (Liter pro Tag), Gewicht (kg) und Alter (Jahre), benannt in features. Das Programm liest die Position einer Kuh k ein.

  1. Vervollständige standardize(X). Die Prüfzeilen geben dann [0. 0. 0.] und [1. 1. 1.] aus.
  2. Finde den z-Wert von Kuh k, der am weitesten von 0 entfernt ist, unabhängig vom Vorzeichen, und gib ihn wie unten mit 2 Dezimalstellen aus.

Für eine Kuh auf einem anderen Bauernhof:

Column means: [0. 0. 0.]
Column stds: [1. 1. 1.]
Cow 2 stands out by weight: 1.76 std above the herd

Probier es selbst

import numpy as np

features = ["milk", "weight", "age"]
# Eine Zeile pro Kuh: Milch in Litern pro Tag, Gewicht in kg, Alter in Jahren
cows = np.array([[28, 610, 6],
                 [22, 540, 3],
                 [35, 680, 6],
                 [31, 590, 9],
                 [19, 650, 4],
                 [26, 520, 2],
                 [30, 600, 7]])
k = int(input())


# Gibt X zurück, wobei jede Spalte standardisiert ist: Mittelwert 0 und Standardabweichung 1
def standardize(X):
    # Ersetze die folgende Zeile durch die Standardisierung
    return X


# Ändere die folgenden drei Zeilen nicht: Sie überprüfen deine Funktion
z = standardize(cows)
print("Column means:", np.round(z.mean(axis=0), 2))
print("Column stds:", np.round(z.std(axis=0), 2))

# Schreibe deinen Code darunter: Was fällt an Kuh k auf?
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