ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Importă OneHotEncoder din sklearn.preprocessing.
  • Instanțiază un obiect OneHotEncoder numit ohe. Specifică argumentul cu nume sparse=False.
  • Folosind metoda .fit_transform(), aplică OneHotEncoder pe df și salvează rezultatul ca df_encoded. Rezultatul va fi un array NumPy.
  • Afișează primele 5 rânduri din df_encoded, apoi forma lui df și a lui df_encoded pentru 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)
Editează și rulează codul