Kom igångKom igång gratis

Kodning av kategoriska kolumner II: OneHotEncoder

Nu har du kodat dina kategoriska kolumner numeriskt. Är det dags att gå vidare med pipelines och XGBoost? Inte riktigt! I de kategoriska kolumnerna i den här datamängden finns det ingen naturlig ordning mellan värdena. Som exempel: med LabelEncoder kodades CollgCr i kolumnen Neighborhood som 5, Veenker som 24 och Crawfor som 6. Är Veenker "större" än Crawfor och CollgCr? Nej – och om modellen tillåts anta en sådan naturlig ordning kan det leda till sämre prestanda.

Därför behövs ytterligare ett steg: du måste använda one-hot-kodning för att skapa binära, eller "dummy"-variabler. Det gör du med scikit-learns OneHotEncoder.

Den här övningen är en del av kursen

Extreme Gradient Boosting med XGBoost

Visa kurs

Övningsinstruktioner

  • Importera OneHotEncoder från sklearn.preprocessing.
  • Skapa ett OneHotEncoder-objekt med namnet ohe. Ange nyckelordsargumentet sparse=False.
  • Använd metoden .fit_transform() för att applicera OneHotEncoderdf och spara resultatet som df_encoded. Utdata blir en NumPy-array.
  • Skriv ut de första 5 raderna i df_encoded, och sedan formen på df samt df_encoded för att jämföra skillnaden.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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)
Redigera och kör kod