Codificador One-Hot
Quando se trata de valores nominais, o tratamento deles é um pouco mais complexo.
Para dados ordinais, como avaliações de usuários variando de 'Terrível' a 'Ótimo', codificá-los como números de 0 a 4 é apropriado, pois o modelo pode capturar a ordem inerente.
Em contraste, para uma característica como 'city'
com cinco categorias distintas, codificá-las como números de 0 a 4 sugeriria incorretamente uma ordem. Nesse caso, a codificação one-hot é uma escolha melhor, pois representa as categorias sem implicar uma hierarquia.
Para codificar dados nominais, utiliza-se o transformador OneHotEncoder
. Ele cria uma coluna para cada valor único. Em seguida, para cada linha, define 1 na coluna correspondente ao valor dessa linha e 0 nas demais colunas.
O que originalmente era 'NewYork'
agora possui 1 na coluna 'City_NewYork'
e 0 nas outras colunas City_
.
Aplicar OneHotEncoder
ao conjunto de dados penguins. As características nominais são 'island'
e 'sex'
. A coluna 'species'
é o alvo e será tratada separadamente ao discutir codificação do alvo no próximo capítulo.
123456import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
Para aplicar o OneHotEncoder
, inicialize o objeto encoder e passe as colunas selecionadas para o método .fit_transform()
, da mesma forma que com outros transformadores.
1234567891011import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
O método .toarray()
converte a matriz esparsa gerada pelo OneHotEncoder
em um array denso do NumPy. Arrays densos exibem todos os valores explicitamente, facilitando a visualização e manipulação dos dados codificados em um DataFrame. Matrizes esparsas armazenam apenas elementos diferentes de zero, otimizando o uso de memória. Você pode omitir este método para ver a diferença na saída.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain how OneHotEncoder works in more detail?
What are the unique values in the 'island' and 'sex' columns?
How do I interpret the output of the OneHotEncoder?
Awesome!
Completion rate improved to 3.13
Codificador One-Hot
Deslize para mostrar o menu
Quando se trata de valores nominais, o tratamento deles é um pouco mais complexo.
Para dados ordinais, como avaliações de usuários variando de 'Terrível' a 'Ótimo', codificá-los como números de 0 a 4 é apropriado, pois o modelo pode capturar a ordem inerente.
Em contraste, para uma característica como 'city'
com cinco categorias distintas, codificá-las como números de 0 a 4 sugeriria incorretamente uma ordem. Nesse caso, a codificação one-hot é uma escolha melhor, pois representa as categorias sem implicar uma hierarquia.
Para codificar dados nominais, utiliza-se o transformador OneHotEncoder
. Ele cria uma coluna para cada valor único. Em seguida, para cada linha, define 1 na coluna correspondente ao valor dessa linha e 0 nas demais colunas.
O que originalmente era 'NewYork'
agora possui 1 na coluna 'City_NewYork'
e 0 nas outras colunas City_
.
Aplicar OneHotEncoder
ao conjunto de dados penguins. As características nominais são 'island'
e 'sex'
. A coluna 'species'
é o alvo e será tratada separadamente ao discutir codificação do alvo no próximo capítulo.
123456import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
Para aplicar o OneHotEncoder
, inicialize o objeto encoder e passe as colunas selecionadas para o método .fit_transform()
, da mesma forma que com outros transformadores.
1234567891011import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
O método .toarray()
converte a matriz esparsa gerada pelo OneHotEncoder
em um array denso do NumPy. Arrays densos exibem todos os valores explicitamente, facilitando a visualização e manipulação dos dados codificados em um DataFrame. Matrizes esparsas armazenam apenas elementos diferentes de zero, otimizando o uso de memória. Você pode omitir este método para ver a diferença na saída.
Obrigado pelo seu feedback!