Aan de slagGa gratis aan de slag

Categorische kolommen encoden II: OneHotEncoder

Oké – je hebt je categorische kolommen numeriek gecodeerd. Kun je nu doorgaan met pipelines en XGBoost? Nog niet! In de categorische kolommen van deze gegevensset is er geen natuurlijke ordening tussen de waarden. Voorbeeld: met LabelEncoder is de CollgCr-Neighborhood gecodeerd als 5, terwijl Veenker is gecodeerd als 24 en Crawfor als 6. Is Veenker “groter” dan Crawfor en CollgCr? Nee – en het model zo’n natuurlijke ordening laten aannemen kan tot slechte prestaties leiden.

Daarom is er nog een stap nodig: je moet one-hot encoding toepassen om binaire, ofwel “dummy”-variabelen te maken. Dit kan met scikit-learns OneHotEncoder.

Deze oefening maakt deel uit van de cursus

Extreme Gradient Boosting met XGBoost

Cursus bekijken

Oefeninstructies

  • Importeer OneHotEncoder uit sklearn.preprocessing.
  • Maak een OneHotEncoder-object met de naam ohe. Geef het keywordargument sparse=False mee.
  • Pas de OneHotEncoder toe op df met de methode .fit_transform() en sla het resultaat op als df_encoded. De output is een NumPy-array.
  • Print de eerste 5 rijen van df_encoded, en vervolgens de vorm (shape) van zowel df als df_encoded om het verschil te vergelijken.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren