Encodarea coloanelor categorice II: OneHotEncoder
Bun – ai encodat coloanele categorice numeric. Poți trece acum la utilizarea pipeline-urilor și XGBoost? Nu încă! În coloanele categorice ale acestui set de date, nu există o ordine naturală între valori. De exemplu: folosind LabelEncoder, cartierul CollgCr a fost encodat ca 5, Veenker ca 24, iar Crawfor ca 6. Este Veenker „mai mare" decât Crawfor și CollgCr? Nu – iar dacă permitem modelului să presupună o astfel de ordine naturală, performanța poate scădea semnificativ.
Prin urmare, mai este nevoie de un pas: trebuie să aplici o encodare one-hot pentru a crea variabile binare, cunoscute și ca variabile „dummy". Poți face acest lucru folosind OneHotEncoder din scikit-learn.
Acest exercițiu face parte din cursul
Gradient Boosting Extrem cu XGBoost
Instrucțiuni pentru exercițiu
- Importă
OneHotEncoderdinsklearn.preprocessing. - Instanțiază un obiect
OneHotEncodernumitohe. Specifică argumentul cu numesparse=False. - Folosind metoda
.fit_transform(), aplicăOneHotEncoderpedfși salvează rezultatul cadf_encoded. Rezultatul va fi un array NumPy. - Afișează primele 5 rânduri din
df_encoded, apoi forma luidfși a luidf_encodedpentru a compara diferența.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)