Codificando colunas categóricas I: LabelEncoder
Agora que você viu o que precisa ser feito para preparar os dados de habitação para o XGBoost, vamos passar pelo processo passo a passo.
Primeiro, você vai preencher os valores ausentes — como viu antes, a coluna LotFrontage tem muitos valores faltando. Depois, será preciso codificar as colunas categóricas do conjunto de dados usando one-hot encoding para que fiquem representadas numericamente. Você pode assistir a este vídeo do curso Supervised Learning with scikit-learn para relembrar o conceito.
Os dados têm cinco colunas categóricas: MSZoning, PavedDrive, Neighborhood, BldgType e HouseStyle. O scikit-learn tem a função LabelEncoder, que converte os valores de cada coluna categórica em inteiros. Você vai praticar isso aqui.
Este exercício faz parte do curso
Extreme Gradient Boosting com XGBoost
Instruções do exercício
- Importe
LabelEncoderdesklearn.preprocessing. - Preencha os valores ausentes na coluna
LotFrontagecom0usando.fillna(). - Crie uma máscara booleana para as colunas categóricas. Você pode fazer isso verificando se
df.dtypesé igual aobject. - Crie um objeto
LabelEncoder. Você pode fazer isso da mesma forma que instancia qualquer estimador do scikit-learn. - Codifique todas as colunas categóricas em inteiros usando
LabelEncoder(). Para isso, use o método.fit_transform()delena função lambda fornecida.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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())