Quais as melhores técnicas para transformar variáveis categóricas em numéricas ?

Carlos Tadei
4 min readJul 31, 2021

--

https://files.realpython.com/media/Encodings--Number-Systems_Watermarked.906d62e907dc.jpg

Em muitos conjuntos de dados muitas vezes nos deparamos com variáveis categóricas, e para partimos para a modelagem de um modelo de machine learning esses dados precisam ser mapeados para recursos numéricos, mas quando falamos de variáveis categóricas precisamos aprender a distinguir entre características nominais e ordinais.

O que são características ordinais ?

Podem ser entendidos como recursos que podemos ordenar ou classificar, por exemplo uma CNH B e maior que uma CNH A ou uma camisa número M é maior que a número P, existe uma diferença entre suas representações, seja por ordem ou tamanho.

Para nossas variáveis ordinais podemos usar o OrdinalEncoder do scikit-learn.

E quanto as características nominais ?

Já as nominais não implicam qualquer ordem, por exemplo a cor da camiseta sendo azul ou vermelha, não existe uma ordem entre elas como se o azul fosse maior que o vermelho ou que o sexo masculino seja maior que o femenino.

Já nesse caso precisamos transformar nossa variável categórica em uma coluna com o OneHotEncoder, dessa forma criamos colunas binárias para cada variável.

Imagine que tenhamos uma coluna chamada Sexo no nosso dataset, com as variaveis Masculino e Femenino, após o OneHotEncoder teremos uma coluna “chamada” Masculino e Femenino e binarizamos cada linha.

Lembrando que como mencionei apenas modelos lineares é necessário usar o OneHotEncoder porque modelos baseados em árvore podem acabar piorando quando fazemos essa transformação, pois a árvore se torna mais esparsa, nesse caso use outras transformação.

Conhecendo a biblioteca Category Encoders

pip install category_encoders

Um conjunto de transformadores de estilo scikit-learn para codificar variáveis ​​categóricas em numéricas com diferentes técnicas.

Vamos analisar apenas duas delas, essas transformações são geralmente usadas em modelos baseados em árvores.

  • CountEncoder
  • TargetEncoder

CountEncoder

Para cada característica categórica, substituímos essa variável pela contagem de cada uma delas.

Veja a variável Cleveland ela aparece 304 vezes no nosso conjunto, então a sua transformação vai ser 304, e assim por diante.

Target Encoder

Para a target encoder, substituímos as variáveis com um combinação de probabilidade de todas as nossas classes, também é possível usá-la para alvos contínuos.

Como podemos ver cada variável categórica foi substituída cada uma delas pela sua probabilidade de acordo com nossas classes.

A melhor forma de sabermos qual a melhor transformação para o nosso problema e testando cada uma delas, caso esteja fazendo uma seleção de modelo ou tunando os parâmetros repetidamente, utilize um conjunto de teste, dessa forma evitamos que acabasemos com um ‘Overfitting’ no conjunto de validação.

Existem muitas outras técnicas que não mencionei nesse artigo, você pode conhece-las na biblioteca Category Encoders:

Notebook:

Documentação da biblioteca Category Encoders

--

--