0Pricing
Learn AI with Python · Lektion

Target-Encoding und fortgeschrittene Verarbeitung kategorischer Daten

Target-Encoding, Frequency-Encoding, Binary-Encoding und Embeddings für Spalten mit hoher Kardinalität.

Target-Encoding und fortgeschrittene Verarbeitung kategorischer Daten ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Das Problem der Kodierung kategorialer Daten

Modelle benötigen Zahlen, Kategorien liegen jedoch als Text vor. One-Hot-Encoding funktioniert bei wenigen Kategorien, aber Merkmale mit hoher Kardinalität (Tausende Städte oder Produkte) erzeugen zu viele Spalten.

Grenzen von One-Hot- und Label-Encoding

One-Hot-Encoding lässt die Dimensionalität explodieren. Einfaches Label-Encoding erfindet eine falsche Ordnung (Stadt 5 ist nicht größer als Stadt 2). Für Daten mit hoher Kardinalität benötigen wir intelligentere Kodierungen.

Was ist Target Encoding

Target Encoding ersetzt jede Kategorie durch den Mittelwert der Zielvariable für diese Kategorie. Eine Stadt wird beispielsweise durch die durchschnittliche Abwanderungsrate der Kundinnen und Kunden in dieser Stadt dargestellt – eine einzige informative Zahl.

import pandas as pd

means = df.groupby("city")["target"].mean()
df["city_encoded"] = df["city"].map(means)

Die Gefahr der Überanpassung

Seltene Kategorien mit wenigen Zeilen erhalten extreme Mittelwerte, die die Zielvariable durchsickern lassen und zur Überanpassung führen. Eine Kategorie, die nur einmal vorkommt, würde genau dieses eine Label übernehmen. Mit Glättung beheben wir dieses Problem.

Glätten der Schätzung

Glättung verbindet den Kategorie-Mittelwert mit dem globalen Mittelwert und gewichtet beide anhand der Anzahl der Stichproben in der Kategorie. Seltene Kategorien werden dadurch stärker zum globalen Durchschnitt hin verschoben, was die Varianz reduziert.

import pandas as pd

global_mean = df["target"].mean()
agg = df.groupby("city")["target"].agg(["mean", "count"])
smoothing = 10
agg["enc"] = (agg["count"] * agg["mean"] + smoothing * global_mean) / (agg["count"] + smoothing)
df["city_enc"] = df["city"].map(agg["enc"])

Die Bibliothek category_encoders

Das Paket category_encoders implementiert diese Encoder mit einer scikit-learn-API, sodass sie sich in Pipelines einfügen lassen und konsistent auf Trainings- und Testdaten angewendet werden.

import category_encoders as ce

encoder = ce.TargetEncoder(cols=["city", "product"], smoothing=10)
X_enc = encoder.fit_transform(X_train, y_train)
X_test_enc = encoder.transform(X_test)

Daten-Leakage in der Praxis vermeiden

Trainieren Sie den Encoder immer nur mit den Trainingsdaten und transformieren Sie anschließend die Validierungs- und Testdaten. Noch besser ist es, Cross-Validation oder Out-of-Fold-Encoding zu verwenden, sodass jede Zeile mit Daten kodiert wird, die diese Zeile nicht enthalten.

import category_encoders as ce
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression

pipe = make_pipeline(
    ce.TargetEncoder(cols=["city"]),
    LogisticRegression(),
)
# fit inside CV to encode without leakage

Binär-Encoding

BinaryEncoder wandelt Kategorien in Binärziffern um und benötigt dabei nur log2(N) Spalten statt N. Damit stellt er einen kompakten Mittelweg zwischen One-Hot-Encoding und Target-Encoding dar.

import category_encoders as ce

encoder = ce.BinaryEncoder(cols=["product_id"])
X_enc = encoder.fit_transform(X_train)
# 256 categories -> 8 binary columns

Weitere nützliche Encoder

category_encoders bietet außerdem CountEncoder (Häufigkeit jeder Kategorie), LeaveOneOutEncoder (Zielwertmittel ohne die aktuelle Zeile) und CatBoostEncoder (geordnete Zielwertstatistiken).

import category_encoders as ce

count_enc = ce.CountEncoder(cols=["city"])
loo_enc = ce.LeaveOneOutEncoder(cols=["city"])

Hohe Kardinalität behandeln

Bei sehr hoher Kardinalität komprimiert Target- oder Count-Encoding die Daten auf eine Spalte, während Binär-Encoding kompakt bleibt. Das Zusammenfassen seltener Kategorien in einer Gruppe „sonstige“ reduziert zusätzlich das Rauschen. Wählen Sie das Verfahren abhängig von der Kardinalität und dem Leakage-Risiko.

import pandas as pd

freq = df["product"].value_counts()
rare = freq[freq < 20].index
df["product"] = df["product"].replace(rare, "other")

Einen Encoder auswählen

Wenige Kategorien: One-Hot-Encoding. Baummodelle mit vielen Kategorien: Target- oder CatBoost-Encoding. Wenn Kompaktheit erforderlich ist: Binär-Encoding. Schützen Sie sich immer vor Leakage, indem Sie nur mit den Trainingsdaten trainieren und Glättung oder Out-of-Fold-Verfahren verwenden.

Kurze Überprüfung

Testen Sie Ihr Wissen über die Kodierung kategorialer Daten.

Zusammenfassung

Zusammenfassung: Target-Encoding ersetzt eine Kategorie durch ihren Zielwertmittelwert und verwendet Glättung, um seltene Kategorien zu stabilisieren. Verwenden Sie category_encoders (TargetEncoder, BinaryEncoder, CatBoost/LeaveOneOut) und trainieren Sie den Encoder ausschließlich mit den Trainingsdaten oder Out-of-Fold, um Leakage zu vermeiden. Kompakte Encoder verarbeiten Merkmale mit hoher Kardinalität, bei denen One-Hot-Encoding an seine Grenzen stößt.

Häufig gestellte Fragen

Ist die Lektion „Target-Encoding und fortgeschrittene Verarbeitung kategorischer Daten“ kostenlos?

Ja — der vollständige Text von „Target-Encoding und fortgeschrittene Verarbeitung kategorischer Daten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Target-Encoding und fortgeschrittene Verarbeitung kategorischer Daten“?

Target-Encoding, Frequency-Encoding, Binary-Encoding und Embeddings für Spalten mit hoher Kardinalität. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Learn AI with Python zu starten?

Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Target-Encoding und fortgeschrittene Verarbeitung kategorischer Daten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?

Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Methoden zur Feature-Auswahl
  2. Interaktions- und polynomiale Features erstellen
  3. Target-Encoding und fortgeschrittene Verarbeitung kategorischer Daten
  4. Automatisiertes Feature Engineering mit Featuretools
← Zurück zu Learn AI with Python