ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Importe OneHotEncoder de sklearn.preprocessing.
  • Instancie um objeto OneHotEncoder chamado ohe. Especifique o argumento nomeado sparse=False.
  • Usando o método .fit_transform(), aplique o OneHotEncoder a df e salve o resultado como df_encoded. A saída será um array do NumPy.
  • Imprima as 5 primeiras linhas de df_encoded e, em seguida, o shape de df e de df_encoded para 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)
Editar e executar o código