LoslegenKostenlos starten

Kodierung kategorialer Spalten I: LabelEncoder

Nachdem du gesehen hast, was nötig ist, um die Immobiliendaten für XGBoost vorzubereiten, gehen wir den Prozess Schritt für Schritt durch.

Zuerst musst du fehlende Werte auffüllen – wie du bereits gesehen hast, enthält die Spalte LotFrontage viele fehlende Werte. Danach musst du alle kategorialen Spalten im Datensatz mithilfe von One-Hot-Encoding bzw. einer numerischen Kodierung umwandeln, damit sie numerisch vorliegen. Zur Auffrischung kannst du dir dieses Video aus dem Kurs Supervised Learning with scikit-learn ansehen.

Die Daten enthalten fünf kategoriale Spalten: MSZoning, PavedDrive, Neighborhood, BldgType und HouseStyle. Scikit-learn bietet mit LabelEncoder eine Funktion, die die Werte in jeder kategorialen Spalte in ganze Zahlen umwandelt. Das übst du hier.

Diese Übung ist Teil des Kurses

<Kurs>Extreme Gradient Boosting mit XGBoost</Kurs>
Kurs ansehen

Übungsanweisungen

  • Importiere LabelEncoder aus sklearn.preprocessing.
  • Fülle fehlende Werte in der Spalte LotFrontage mit 0 über .fillna().
  • Erstelle eine boolesche Maske für kategoriale Spalten. Das geht, indem du prüfst, ob df.dtypes gleich object ist.
  • Erzeuge ein LabelEncoder-Objekt. Das machst du genauso, wie du jeden scikit-learn-Schätzer instanziierst.
  • Kodieren alle kategorialen Spalten als ganze Zahlen mit LabelEncoder(). Verwende dazu die Methode .fit_transform() von le in der bereitgestellten Lambda-Funktion.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# Import LabelEncoder
____

# Fill missing values with 0
df.LotFrontage = ____

# Create a boolean mask for categorical columns
categorical_mask = (____ == ____)

# Get list of categorical column names
categorical_columns = df.columns[categorical_mask].tolist()

# Print the head of the categorical columns
print(df[categorical_columns].head())

# Create LabelEncoder object: le
le = ____

# Apply LabelEncoder to categorical columns
df[categorical_columns] = df[categorical_columns].apply(lambda x: ____(x))

# Print the head of the LabelEncoded categorical columns
print(df[categorical_columns].head())
Code bearbeiten und ausführen