LoslegenKostenlos loslegen

Kategorische Spalten kodieren II: OneHotEncoder

Okay – deine kategorialen Spalten sind numerisch kodiert. Kannst du jetzt mit Pipelines und XGBoost loslegen? Noch nicht! In den kategorialen Spalten dieses Datensatzes gibt es keine natürliche Reihenfolge zwischen den Ausprägungen. Beispiel: Mit dem LabelEncoder wurde das Neighborhood CollgCr als 5 kodiert, Veenker als 24 und Crawfor als 6. Ist Veenker „größer“ als Crawfor und CollgCr? Nein – und wenn das Modell eine solche natürliche Ordnung annimmt, kann das die Leistung verschlechtern.

Deshalb ist ein weiterer Schritt nötig: Du musst ein One-Hot-Encoding anwenden, um binäre bzw. „Dummy“-Variablen zu erzeugen. Das geht mit scikit-learns OneHotEncoder.

Diese Übung ist Teil des Kurses

Extreme Gradient Boosting mit XGBoost

Kurs anzeigen

Anleitung zur Übung

  • Importiere OneHotEncoder aus sklearn.preprocessing.
  • Erzeuge ein OneHotEncoder-Objekt namens ohe. Gib das Schlüsselwortargument sparse=False an.
  • Wende den OneHotEncoder mit seiner Methode .fit_transform() auf df an und speichere das Ergebnis als df_encoded. Die Ausgabe ist ein NumPy-Array.
  • Gib die ersten 5 Zeilen von df_encoded aus und anschließend die Form von df sowie df_encoded, um den Unterschied zu vergleichen.

Interaktive Übung

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

# Import OneHotEncoder
____

# Create OneHotEncoder: ohe
ohe = ____

# Apply OneHotEncoder to categorical columns - output is no longer a dataframe: df_encoded
df_encoded = ____

# Print first 5 rows of the resulting dataset - again, this will no longer be a pandas dataframe
print(df_encoded[:5, :])

# Print the shape of the original DataFrame
print(df.shape)

# Print the shape of the transformed array
print(df_encoded.shape)
Code bearbeiten und ausführen