ComenzarEmpieza gratis

Codificación de columnas categóricas I: LabelEncoder

Ahora que has visto lo que hay que hacer para preparar los datos de viviendas para XGBoost, vamos a seguir el proceso paso a paso.

Primero, tendrás que completar los valores faltantes; como viste antes, la columna LotFrontage tiene muchos valores ausentes. Después, tendrás que codificar las columnas categóricas del conjunto de datos usando one-hot encoding para que queden en formato numérico. Puedes ver este vídeo del curso Supervised Learning with scikit-learn para refrescar la idea.

Los datos tienen cinco columnas categóricas: MSZoning, PavedDrive, Neighborhood, BldgType y HouseStyle. Scikit-learn tiene una función LabelEncoder que convierte los valores de cada columna categórica en enteros. Aquí practicarás cómo usarla.

Este ejercicio forma parte del curso

Extreme Gradient Boosting con XGBoost

Ver curso

Instrucciones del ejercicio

  • Importa LabelEncoder de sklearn.preprocessing.
  • Rellena los valores faltantes en la columna LotFrontage con 0 usando .fillna().
  • Crea una máscara booleana para las columnas categóricas. Puedes hacerlo comprobando si df.dtypes es igual a object.
  • Crea un objeto LabelEncoder. Puedes hacerlo del mismo modo que instancias cualquier estimador de scikit-learn.
  • Codifica todas las columnas categóricas a enteros usando LabelEncoder(). Para ello, utiliza el método .fit_transform() de le en la función lambda proporcionada.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Import LabelEncoder
____

# Fill missing values with 0
df.LotFrontage = ____

# Create a boolean mask for categorical columns
categorical_mask = (____ == ____)

# Get list of categorical column names
categorical_columns = df.columns[categorical_mask].tolist()

# Print the head of the categorical columns
print(df[categorical_columns].head())

# Create LabelEncoder object: le
le = ____

# Apply LabelEncoder to categorical columns
df[categorical_columns] = df[categorical_columns].apply(lambda x: ____(x))

# Print the head of the LabelEncoded categorical columns
print(df[categorical_columns].head())
Editar y ejecutar código