ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Importa OneHotEncoder de sklearn.preprocessing.
  • Crea una instancia de OneHotEncoder llamada ohe. Especifica el argumento sparse=False.
  • Usando su método .fit_transform(), aplica el OneHotEncoder a df y guarda el resultado como df_encoded. La salida será un array de NumPy.
  • Imprime las 5 primeras filas de df_encoded y, después, la forma (shape) de df y de df_encoded para 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)
Editar y ejecutar código