Codificação de colunas categóricas II: OneHotEncoder
Certo — você já codificou suas colunas categóricas como números. Dá para partir para pipelines e XGBoost agora? Ainda não! Nas colunas categóricas deste conjunto de dados, não existe uma ordem natural entre os valores. Por exemplo: usando LabelEncoder, o Neighborhood CollgCr foi codificado como 5, enquanto o Neighborhood Veenker foi codificado como 24, e Crawfor como 6. Veenker é “maior” que Crawfor e CollgCr? Não — e deixar o modelo assumir essa ordem natural pode prejudicar o desempenho.
Por isso, é preciso mais um passo: aplicar uma codificação one-hot para criar variáveis binárias, ou “dummies”. Você pode fazer isso usando o OneHotEncoder do scikit-learn.
Este exercício faz parte do curso
Extreme Gradient Boosting com XGBoost
Instruções do exercício
- Importe
OneHotEncoderdesklearn.preprocessing. - Instancie um objeto
OneHotEncoderchamadoohe. Especifique o argumento nomeadosparse=False. - Usando o método
.fit_transform(), aplique oOneHotEncoderadfe salve o resultado comodf_encoded. A saída será um array do NumPy. - Imprima as 5 primeiras linhas de
df_encodede, em seguida, o shape dedfe dedf_encodedpara comparar a diferença.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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)