Codificación de columnas categóricas II: OneHotEncoder
De acuerdo: ya tienes tus columnas categóricas codificadas numéricamente. ¿Puedes pasar ahora a usar pipelines y XGBoost? ¡Aún no! En las columnas categóricas de este conjunto de datos, no existe un orden natural entre las categorías. Por ejemplo: usando LabelEncoder, el Neighborhood CollgCr se codificó como 5, mientras que el Neighborhood Veenker se codificó como 24, y Crawfor como 6. ¿Es Veenker "mayor" que Crawfor y CollgCr? No, y permitir que el modelo suponga este orden natural puede empeorar el rendimiento.
Por ello, falta otro paso: tienes que aplicar una codificación one-hot para crear variables binarias o "ficticias". Puedes hacerlo con el OneHotEncoder de scikit-learn.
Este ejercicio forma parte del curso
Extreme Gradient Boosting con XGBoost
Instrucciones del ejercicio
- Importa
OneHotEncoderdesklearn.preprocessing. - Crea una instancia de
OneHotEncoderllamadaohe. Especifica el argumentosparse=False. - Usando su método
.fit_transform(), aplica elOneHotEncoderadfy guarda el resultado comodf_encoded. La salida será un array de NumPy. - Imprime las 5 primeras filas de
df_encodedy, después, la forma (shape) dedfy dedf_encodedpara comparar la diferencia.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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)