Data Preprocessing
Bei der Datenvorverarbeitung werden Rohdaten aus Tabellen, Texten und Bildern in saubere, skalierte Eingaben mit festem Format umgewandelt, wie sie ein Modell erwartet. Hier geht es um gängige Schritte, Regeln gegen Datenleckage und Code.
Datenvorverarbeitung umfasst die Transformationen, mit denen Rohdaten in die bereinigten, einheitlich formatierten numerischen Eingaben umgewandelt werden, die ein Machine-Learning-Modell (ML) erwartet. Die Vorverarbeitung wird beim Training und bei der Inferenz auf dieselbe Weise angewendet. Bei Tabellendaten bedeutet das, fehlende Werte zu behandeln, Kategorien als Zahlen zu codieren und Merkmale zu skalieren. Bei Bildern gehören das Dekodieren der Dateien, das Anpassen der Bildgröße an die Eingabegröße des Netzwerks, die Anordnung der Farbkanäle und die Skalierung der Pixelwerte dazu. Die Vorverarbeitung ist praktisch Teil des Modells: Ein Netzwerk, das mit RGB-Bildern trainiert wurde, deren Werte auf 0–1 skaliert sind, liefert unzuverlässige Vorhersagen, wenn es BGR-Bilder mit Werten von 0 bis 255 erhält – selbst wenn sich seine Gewichte nicht geändert haben.
Gängige Schritte der Vorverarbeitung#
- Datenbereinigung: Duplikate, beschädigte Dateien und unmögliche Werte entfernen sowie uneinheitliche Labels oder Maßeinheiten korrigieren.
- Imputation: Fehlende Werte durch eine statistische Kennzahl wie den Spaltenmedian, eine modellbasierte Schätzung oder eine separate Kategorie „fehlend“ ersetzen oder Zeilen mit zu vielen Lücken entfernen.
- Kodierung: Kategorien in Zahlen umwandeln: mit One-Hot-Kodierung für ungeordnete Kategorien wie Farben, mit Ordinalcodes für geordnete Kategorien wie Größen und mit ganzzahligen Indizes für Klassennamen.
- Skalierung und Normalisierung: Die Min-Max-Skalierung ordnet ein Merkmal dem Bereich 0–1 zu. Bei der Standardisierung wird der Mittelwert abgezogen und durch die Standardabweichung geteilt. So überwiegt bei distanzbasierten Modellen ein in Millimetern gemessenes Merkmal kein in Metern gemessenes Merkmal, und der Gradientenabstieg konvergiert schneller. Viele mit ImageNet vortrainierte Modelle in torchvision erwarten für jeden RGB-Kanal eine Standardisierung mit den Mittelwerten 0,485, 0,456 und 0,406 sowie den Standardabweichungen 0,229, 0,224 und 0,225.
- Größenanpassung: Jedes Bild wird auf die Eingabegröße des Netzwerks gebracht – durch Strecken, zentrales Zuschneiden oder Letterboxing. Beim Letterboxing wird das Bild skaliert und der übrige Bereich aufgefüllt, damit die Objekte ihre Proportionen behalten.
- Tokenisierung: Text in Tokens aufteilen und jedem Token eine ganzzahlige ID aus einem festen Vokabular zuweisen.
Zusätzlich kommen domänenspezifische Schritte zum Einsatz. CT-Aufnahmen werden mit einem Fenster versehen: Ein Bereich von Hounsfield-Einheiten, etwa der für Lungengewebe relevante Bereich, wird auf die Anzeigeintensitäten abgebildet, die das Modell verarbeitet. Audio wird auf eine feste Abtastrate gebracht und oft in ein Spektrogramm umgewandelt.
Auf Trainingsdaten anpassen, überall anwenden#
Statistiken für die Vorverarbeitung, etwa Mittelwerte und Standardabweichungen von Merkmalen, Imputationswerte und Kategorievokabulare, werden ausschließlich anhand der Trainingsaufteilung berechnet, gespeichert und anschließend unverändert auf Validierungs-, Test- und Produktionsdaten angewendet. Werden die Statistiken vor der Aufteilung anhand des gesamten Datensatzes berechnet, können Informationen aus der Testmenge die Trainingseingaben beeinflussen. Das ist eine Form von Datenleck, die Evaluierungswerte künstlich erhöht. Eine scikit-learn-Pipeline setzt diese Regel durch, indem sie ihre Vorverarbeitungsschritte nur innerhalb der an fit übergebenen Daten anpasst. Eine andere Vorverarbeitung zur Bereitstellungszeit, etwa eine andere Methode zur Größenanpassung oder ein anderer Bilddecoder, führt zu einer Abweichung zwischen Training und Bereitstellung: Das Modell erzielt offline gute Werte und in der Produktion schlechtere Ergebnisse.
Bildvorverarbeitung für Bildverarbeitungsmodelle#
Bildmodelle benötigen ein festes Tensorlayout. OpenCV dekodiert Bilder als Arrays der Form Höhe × Breite × Kanal mit 8-Bit-Ganzzahlen und BGR-Reihenfolge. PyTorch-Netzwerke erwarten dagegen Batches aus Float-Tensoren im kanalorientierten RGB-Format. Die Vorhersage mit YOLO26 in Ultralytics führt diese Schritte automatisch aus: Jedes Bild wird ohne Verzerrung so skaliert, dass seine längere Seite imgsz entspricht, standardmäßig 640 Pixel. Für Modelle mit fester Eingabegröße und exportierte Modelle wird das Bild mit grauen Pixeln im Wert von 114 zu einem Quadrat von 640 × 640 aufgefüllt. Bei PyTorch-Modellen wird es nur bis zum nächsten Vielfachen des 32-Pixel-Strides aufgefüllt. Anschließend wird BGR in RGB umgewandelt, das Array in die kanalorientierte Reihenfolge gebracht und durch 255 geteilt. Das folgende Skript mit OpenCV und NumPy führt das Letterboxing auf ein Quadrat von Hand aus:
import urllib.request
import cv2
import numpy as np
# Download a sample photo and read it as a BGR uint8 array of shape (height, width, 3)
urllib.request.urlretrieve("https://ultralytics.com/images/bus.jpg", "bus.jpg")
image = cv2.imread("bus.jpg")
# Resize so the longer side is 640 pixels, keeping the aspect ratio
scale = 640 / max(image.shape[:2])
resized = cv2.resize(image, None, fx=scale, fy=scale, interpolation=cv2.INTER_LINEAR)
# Letterbox: center the resized image on a 640x640 canvas of gray (114) padding
canvas = np.full((640, 640, 3), 114, dtype=np.uint8)
top, left = (640 - resized.shape[0]) // 2, (640 - resized.shape[1]) // 2
canvas[top : top + resized.shape[0], left : left + resized.shape[1]] = resized
# Reorder BGR to RGB and HWC to CHW, scale pixels to 0-1, and add a batch dimension
tensor = canvas[:, :, ::-1].transpose(2, 0, 1).astype(np.float32) / 255.0
batch = tensor[None]
print(f"{image.shape} uint8 -> {batch.shape} float32 in [{batch.min():.1f}, {batch.max():.1f}]")Das Skript gibt (1080, 810, 3) uint8 -> (1, 3, 640, 640) float32 in [0.0, 1.0] aus: Das Foto mit den Maßen 1080 × 810 wird in einen Batch aus einem Bild im Layout und Wertebereich umgewandelt, den ein PyTorch-Detektor erwartet. Dabei füllen graue Balken die 80 Pixel an jeder Seite.
Datenvorverarbeitung und verwandte Begriffe#
- Datenbeschriftung: Erstellt die Ground-Truth-Ziele wie Klassen und Boxen, die die Vorverarbeitung anschließend in das numerische Format umwandelt, das vom Training eingelesen wird.
- Feature Engineering: Erstellt auf Grundlage von Fachwissen neue Eingabevariablen, etwa den Body-Mass-Index aus den Spalten für Körpergröße und Gewicht.
- Batchnormalisierung: Eine Schicht innerhalb des Netzwerks, die Zwischenaktivierungen beim Training und bei der Inferenz standardisiert. Die Normalisierung der Eingaben in der Vorverarbeitung erfolgt einmalig, bevor die Daten das Netzwerk erreichen.
- Datenerweiterung: Zufällige Transformationen wie Spiegelungen, Farbverschiebungen und Mosaike, die nur während des Trainings angewendet werden, um vielfältige Varianten jedes Beispiels zu erzeugen. Die Vorverarbeitung ist deterministisch und beim Training und bei der Inferenz identisch.










