Datenvorbereitung für maschinelles Lernen in Python
Modelle des maschinellen Lernens lernen aus Zahlen, und sie lernen besser, wenn die Merkmale ähnlich skaliert sind. Normalisierung und Standardisierung skalieren die Daten, und Matrixmultiplikation ist der Weg, auf dem Modelle viele Merkmale gleichzeitig kombinieren.
Das Konzept in einfachen Worten
Modelle des maschinellen Lernens lernen aus Zahlen, und sie lernen besser, wenn die Merkmale ähnlich skaliert sind. Normalisierung und Standardisierung skalieren die Daten, und Matrixmultiplikation ist der Weg, auf dem Modelle viele Merkmale gleichzeitig kombinieren.
Skaliere Merkmale mit Min-Max-Normalisierung und Z-Score-Standardisierung und multipliziere Matrizen von Hand.
Die wichtigsten Ideen
- Merkmale mit sehr unterschiedlichen Skalen lassen die großen Zahlen das Modell dominieren.
- Min-Max hält Werte zwischen 0 und 1; Z-Scores behalten die Form, verschieben die Mitte aber auf 0.
- Berechne die Skalierungswerte auf den Trainingsdaten und verwende sie für neue Daten wieder.
- Für ein Matrixprodukt A × B muss die Spaltenzahl von A der Zeilenzahl von B entsprechen.
Wann wird dieser Ansatz verwendet?
- Verstehen, was in neuronalen Netzen und KI-Bibliotheken passiert.
- Die Idee lernen, bevor du sie in den passenden Challenges umsetzt.
- Dich auf Kurse zu maschinellem Lernen, Vorstellungsgespräche und Projekte vorbereiten.
Selbst ausprobieren
Ziehe x5, um einen Ausreißer zu erzeugen, und vergleiche, wie Min-Max und Z-Score reagieren. Zeige auf eine Zelle von A·B, um zu sehen, welche Zeile und Spalte sie nutzt.
Beispielcode
import statistics
heights = [150, 160, 170, 180, 190]
# Min-max scaling squeezes values into the range 0..1.
low, high = min(heights), max(heights)
print("min-max:", [round((h - low) / (high - low), 2) for h in heights])
# Z-score standardization centres values on 0 with a spread of 1.
mean = statistics.mean(heights)
std = statistics.pstdev(heights)
print("z-scores:", [round((h - mean) / std, 2) for h in heights])
# Matrix multiplication: each output is a row of A dotted with a column of B.
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
product = [[sum(A[i][k] * B[k][j] for k in range(2)) for j in range(2)] for i in range(2)]
print("A x B:", product)
Erwartete Ausgabe
min-max: [0.0, 0.25, 0.5, 0.75, 1.0]
z-scores: [-1.41, -0.71, 0.0, 0.71, 1.41]
A x B: [[19, 22], [43, 50]]
So funktioniert es
Die Min-Max-Skalierung bildet die kleinste Körpergröße auf 0 und die größte auf 1 ab. Z-Scores ziehen den Mittelwert ab und teilen durch die Standardabweichung, sodass die Werte um 0 liegen. Im Matrixprodukt ist jede Zelle eine Zeile von A, elementweise mit einer Spalte von B multipliziert und dann aufsummiert.
Ändere die Werte und führe das Programm im CodeUtility Python Online-Compiler aus, ohne Python lokal zu installieren.
Übungsaufgaben
Verändere Eingaben und Randfälle, bevor du die Lösung mit größeren Datenmengen testest.
- Ändere Eingaben oder Gewichte und sage die Ausgabe vor dem Ausführen voraus.
- Gib die Zwischenwerte aus, um jeden Rechenschritt zu verfolgen.
- Löse die verlinkten Challenges unten, um die Idee selbst umzusetzen.
Mit einer Challenge üben
Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.
- Matrizenmultiplikation Multipliziere zwei Matrizen, die Operation hinter jeder Schicht eines neuronalen Netzes. Einfach
- Min-Max-Normalisierung Skaliere ein Merkmal so, dass sein kleinster Wert 0 und sein größter 1 wird. Einfach
- Z-Score-Standardisierung Zentriere ein Merkmal auf 0 und skaliere es auf eine Standardabweichung von 1. Einfach