LoslegenKostenlos loslegen

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

Extreme Gradient Boosting mit XGBoost

Kurs anzeigen

Anleitung zur Übung

  • 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 Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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