Zum Inhalt springen

Kategorische Daten

Die Datenvorverarbeitung ist ein entscheidender Schritt in jedem Machine-Learning-Projekt. Sie umfasst das Bereinigen und Transformieren von Rohdaten in ein Format, das von Machine-Learning-Algorithmen leicht analysiert werden kann. Python bietet eine Vielzahl von Vorverarbeitungstechniken, die dabei helfen können, die Datenqualität und die Modellleistung zu verbessern. Dieses Kapitel behandelt grundlegende Vorverarbeitungsschritte mit einem Schwerpunkt auf der Vorbereitung von Daten für die Verarbeitung kategorialer Variablen.

Daten importieren

Der erste Schritt bei jeder Datenvorverarbeitungsaufgabe ist das Importieren von Daten. Die Python-Bibliothek pandas bietet einen einfachen Weg, Daten aus verschiedenen Dateiformaten zu lesen. Die Funktion read_csv() kann verwendet werden, um Daten aus einer CSV-Datei zu lesen.

python
import pandas as pd
df = pd.read_csv('data.csv')

Datenbereinigung

Die Datenbereinigung ist ein wesentlicher Aspekt der Datenvorverarbeitung. Sie umfasst das Identifizieren und Behandeln von fehlenden Daten, Ausreißern und Anomalien. Die Pandas-Bibliothek bietet mehrere Methoden zur Datenbereinigung, wie fillna(), dropna() und replace().

python
# Fill missing values with a default
df['column'] = df['column'].fillna(0)

# Drop rows with any missing values
df = df.dropna()

# Replace specific values
df['column'] = df['column'].replace('old_value', 'new_value')

Datentransformation

Die Datentransformation ist der Prozess der Umwandlung von Rohdaten in ein für die Analyse geeignetes Format. Zu den häufig verwendeten Datentransformationstechniken gehören Skalierung, Kodierung und Normalisierung.

Skalierung

Die Skalierung wird verwendet, um die Merkmale eines Datensatzes auf eine ähnliche Skala zu bringen. Diese Technik ist nützlich, wenn die Merkmale unterschiedliche Wertebereiche aufweisen. Die am häufigsten verwendeten Skalierungstechniken sind StandardScaler und MinMaxScaler.

Kodierung

Die Kodierung ist der Prozess der Umwandlung kategorialer Variablen in numerische Werte. Die am häufigsten verwendeten Kodierungstechniken sind Ordinale Kodierung und One-Hot-Kodierung.

python
from sklearn.preprocessing import OrdinalEncoder, OneHotEncoder
import pandas as pd

# Ordinal Encoding (for ordered categories)
encoder = OrdinalEncoder()
df['category'] = encoder.fit_transform(df[['category']])

# One-Hot Encoding (for unordered categories)
ohe = OneHotEncoder(sparse_output=False, handle_unknown='ignore')
encoded_array = ohe.fit_transform(df[['category']])
# Convert the numpy array back to a DataFrame with proper column names
encoded_df = pd.DataFrame(encoded_array, columns=ohe.get_feature_names_out(['category']))

Hinweis zur Datenleckage: Passen Sie Encoder immer nur auf den Trainingsdaten an und transformieren Sie anschließend sowohl die Trainings- als auch die Testdaten. Dies verhindert, dass Informationen aus dem Testset das Modell beeinflussen.

Umgang mit unbekannten Kategorien: Verwenden Sie handle_unknown='ignore' in OneHotEncoder, um Fehler zu vermeiden, wenn das Testset Kategorien enthält, die während des Trainings nicht gesehen wurden.

Normalisierung

Die Normalisierung ist der Prozess der Skalierung numerischer Merkmale auf einen festen Bereich, typischerweise [0, 1]. Die Standardisierung transformiert Merkmale hingegen so, dass sie einen Mittelwert von null und eine Standardabweichung von eins aufweisen. Diese Technik ist nützlich, wenn Merkmale unterschiedliche Maßeinheiten haben oder wenn Algorithmen normalverteilte Daten voraussetzen.

Merkmalsauswahl

Die Merkmalsauswahl ist der Prozess der Auswahl der relevantesten Merkmale für ein Machine-Learning-Modell. Sie umfasst das Identifizieren der signifikantesten Prädiktoren und das Entfernen der am wenigsten wichtigen. Die am häufigsten verwendete Technik zur Merkmalsauswahl ist SelectKBest.

python
# Prepare features (X) and target (y) from the dataframe
X = df.drop('target', axis=1)
y = df['target']

from sklearn.feature_selection import SelectKBest, f_classif

# Select the top 3 features based on ANOVA F-value
selector = SelectKBest(score_func=f_classif, k=3)
X_new = selector.fit_transform(X, y)

Fazit

Dieses Kapitel hat die wichtigsten Vorverarbeitungsschritte skizziert, darunter Datenbereinigung, Transformation und Merkmalsauswahl. Durch die Anwendung dieser Techniken können Sie die Datenqualität verbessern und die Modellleistung optimieren, insbesondere bei der Vorbereitung von Datensätzen für die Analyse kategorialer Variablen. Die ordnungsgemäße Behandlung kategorialer Daten durch geeignete Kodierung und die Vermeidung von Datenleckage gewährleisten robuste und reproduzierbare Machine-Learning-Pipelines.

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.