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