Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Codificador One-Hot | Pré-Processamento de Dados com Scikit-learn
Introdução ao ML com Scikit-Learn

bookCodificador One-Hot

Quando se trata de valores nominais, o tratamento deles é um pouco mais complexo.

Vamos considerar uma característica que contém dados ordinais, como avaliações de usuários. Seus valores variam de 'Terrible' a 'Great'. Faz sentido codificar essas avaliações como números de 0 a 4 porque o modelo de ML irá reconhecer a ordem inerente.

Agora, considere uma característica chamada 'city' com cinco cidades distintas. Codificá-las como números de 0 a 4 implicaria erroneamente uma ordem lógica para o modelo de ML, que na verdade não existe. Portanto, uma abordagem mais adequada é utilizar a codificação one-hot, que evita sugerir qualquer ordem falsa.

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 demais colunas City_.

Vamos utilizar o OneHotEncoder em nosso conjunto de dados penguins! Existem duas características nominais, 'island' e 'sex' (sem contar 'species', aprenderemos como lidar com target encoding no próximo capítulo).

123456
import 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())
copy

Para utilizar o OneHotEncoder, basta inicializar um objeto e passar as colunas para o .fit_transform(), assim como com qualquer outro transformador.

1234567891011
import 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())
copy
question mark

OneHotEncoder cria novas colunas. Isso está correto?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.13

bookCodificador One-Hot

Deslize para mostrar o menu

Quando se trata de valores nominais, o tratamento deles é um pouco mais complexo.

Vamos considerar uma característica que contém dados ordinais, como avaliações de usuários. Seus valores variam de 'Terrible' a 'Great'. Faz sentido codificar essas avaliações como números de 0 a 4 porque o modelo de ML irá reconhecer a ordem inerente.

Agora, considere uma característica chamada 'city' com cinco cidades distintas. Codificá-las como números de 0 a 4 implicaria erroneamente uma ordem lógica para o modelo de ML, que na verdade não existe. Portanto, uma abordagem mais adequada é utilizar a codificação one-hot, que evita sugerir qualquer ordem falsa.

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 demais colunas City_.

Vamos utilizar o OneHotEncoder em nosso conjunto de dados penguins! Existem duas características nominais, 'island' e 'sex' (sem contar 'species', aprenderemos como lidar com target encoding no próximo capítulo).

123456
import 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())
copy

Para utilizar o OneHotEncoder, basta inicializar um objeto e passar as colunas para o .fit_transform(), assim como com qualquer outro transformador.

1234567891011
import 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())
copy
question mark

OneHotEncoder cria novas colunas. Isso está correto?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 6
some-alt