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
Övningsinstruktioner
- Importera
OneHotEncoderfrånsklearn.preprocessing. - Skapa ett
OneHotEncoder-objekt med namnetohe. Ange nyckelordsargumentetsparse=False. - Använd metoden
.fit_transform()för att appliceraOneHotEncoderpådfoch spara resultatet somdf_encoded. Utdata blir en NumPy-array. - Skriv ut de första 5 raderna i
df_encoded, och sedan formen pådfsamtdf_encodedfö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)