Como realizar a codificação one-hot em python


A codificação one-hot é usada para converter variáveis categóricas em um formato que pode ser facilmente usado por algoritmos de aprendizado de máquina .

A ideia básica da codificação one-hot é criar novas variáveis que assumam os valores 0 e 1 para representar os valores categóricos originais.

Por exemplo, a imagem a seguir mostra como faríamos a codificação one-hot para converter uma variável categórica contendo nomes de equipes em novas variáveis contendo apenas valores 0 e 1:

O exemplo passo a passo a seguir mostra como realizar a codificação one-hot para este conjunto de dados exato em Python.

Etapa 1: crie os dados

Primeiro, vamos criar o seguinte DataFrame do pandas:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29]})

#view DataFrame
print (df)

  team points
0 to 25
1 to 12
2 B 15
3 B 14
4 B 19
5 B 23
6 C 25
7 C 29

Etapa 2: execute a codificação one-hot

A seguir, vamos importar a função OneHotEncoder() da biblioteca sklearn e usá-la para realizar codificação a quente na variável ‘team’ no DataFrame do pandas:

 from sklearn. preprocessing import OneHotEncoder

#creating instance of one-hot-encoder
encoder = OneHotEncoder(handle_unknown=' ignore ')

#perform one-hot encoding on 'team' column 
encoder_df = pd. DataFrame ( encoder.fit_transform (df[[' team ']]). toarray ())

#merge one-hot encoded columns back with original DataFrame
final_df = df. join (encoder_df)

#view final df
print (final_df)

  team points 0 1 2
0 to 25 1.0 0.0 0.0
1 to 12 1.0 0.0 0.0
2 B 15 0.0 1.0 0.0
3 B 14 0.0 1.0 0.0
4 B 19 0.0 1.0 0.0
5 B 23 0.0 1.0 0.0
6 C 25 0.0 0.0 1.0
7 C 29 0.0 0.0 1.0

Observe que três novas colunas foram adicionadas ao DataFrame, pois a coluna “equipe” original continha três valores exclusivos.

Observação : você pode encontrar a documentação completa da função OneHotEncoder() aqui .

Etapa 3: remover a variável categórica original

Finalmente, podemos remover a variável ‘team’ original do DataFrame, pois não precisamos mais dela:

 #drop 'team' column
final_df. drop (' team ', axis= 1 , inplace= True )

#view final df
print (final_df)

   points 0 1 2
0 25 1.0 0.0 0.0
1 12 1.0 0.0 0.0
2 15 0.0 1.0 0.0
3 14 0.0 1.0 0.0
4 19 0.0 1.0 0.0
5 23 0.0 1.0 0.0
6 25 0.0 0.0 1.0
7 29 0.0 0.0 1.0

Relacionado: Como excluir colunas no Pandas (4 métodos)

Também poderíamos renomear as colunas do DataFrame final para torná-las mais fáceis de ler:

 #rename columns
final_df. columns = ['points', 'teamA', 'teamB', 'teamC']

#view final df
print (final_df)

   points teamA teamB teamC
0 25 1.0 0.0 0.0
1 12 1.0 0.0 0.0
2 15 0.0 1.0 0.0
3 14 0.0 1.0 0.0
4 19 0.0 1.0 0.0
5 23 0.0 1.0 0.0
6 25 0.0 0.0 1.0
7 29 0.0 0.0 1.0

A codificação one-hot está concluída e agora podemos inserir este DataFrame do pandas em qualquer algoritmo de aprendizado de máquina que desejarmos.

Recursos adicionais

Como calcular uma média aparada em Python
Como realizar regressão linear em Python
Como realizar regressão logística em Python

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *