Codificação de Variáveis Categóricas
Variáveis categóricas são características em seus dados que representam categorias em vez de valores numéricos. Exemplos incluem cores como "red", "green" e "blue", ou rótulos como "yes" e "no". Algoritmos de aprendizado de máquina exigem que os dados de entrada sejam numéricos, portanto, é necessário converter essas variáveis categóricas em um formato numérico antes de utilizá-las nos modelos. Esse processo é chamado de codificação e garante que seus algoritmos possam interpretar e aprender com os dados de forma eficaz.
One-hot encoding cria uma nova coluna binária para cada categoria de uma variável categórica. Cada observação recebe um 1 na coluna correspondente à sua categoria e 0 nas demais.
12345678910111213import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # One-hot encode the 'embarked' column embarked_encoded = pd.get_dummies(data["embarked"], prefix="embarked") # Concatenate with original dataset data = pd.concat([data, embarked_encoded], axis=1) print(data[["embarked", "embarked_C", "embarked_Q", "embarked_S"]].head())
Codificação por rótulo atribui a cada categoria única em uma variável um valor inteiro, transformando rótulos de texto em números.
123456789101112import seaborn as sns import pandas as pd from sklearn.preprocessing import LabelEncoder # Load Titanic dataset data = sns.load_dataset("titanic") # Label encode the 'sex' column encoder = LabelEncoder() data["sex_encoded"] = encoder.fit_transform(data["sex"]) print(data[["sex", "sex_encoded"]].head())
Codificação ordinal atribui valores inteiros ordenados às categorias com base em sua classificação natural. Este método preserva a ordem inerente em variáveis categóricas ordinais, como níveis de escolaridade ("high school", "bachelor", "master", "doctorate").
123456789101112131415161718import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # Define the order of passenger classes: First < Second < Third class_order = ["First", "Second", "Third"] # Apply ordered categorical encoding data["class_encoded"] = pd.Categorical( data["class"], categories=class_order, ordered=True ).codes + 1 # +1 to make classes start from 1 instead of 0 # Display sample output print(data[["class", "class_encoded"]].head())
Tenha cuidado ao codificar variáveis categóricas. One-hot encoding pode introduzir o dummy variable trap – uma situação em que as variáveis ficam altamente correlacionadas, o que pode confundir alguns modelos. Para evitar isso, é possível remover uma das colunas dummy. Label encoding impõe uma relação ordinal entre as categorias, o que pode não ser apropriado para dados nominais.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 8.33
Codificação de Variáveis Categóricas
Deslize para mostrar o menu
Variáveis categóricas são características em seus dados que representam categorias em vez de valores numéricos. Exemplos incluem cores como "red", "green" e "blue", ou rótulos como "yes" e "no". Algoritmos de aprendizado de máquina exigem que os dados de entrada sejam numéricos, portanto, é necessário converter essas variáveis categóricas em um formato numérico antes de utilizá-las nos modelos. Esse processo é chamado de codificação e garante que seus algoritmos possam interpretar e aprender com os dados de forma eficaz.
One-hot encoding cria uma nova coluna binária para cada categoria de uma variável categórica. Cada observação recebe um 1 na coluna correspondente à sua categoria e 0 nas demais.
12345678910111213import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # One-hot encode the 'embarked' column embarked_encoded = pd.get_dummies(data["embarked"], prefix="embarked") # Concatenate with original dataset data = pd.concat([data, embarked_encoded], axis=1) print(data[["embarked", "embarked_C", "embarked_Q", "embarked_S"]].head())
Codificação por rótulo atribui a cada categoria única em uma variável um valor inteiro, transformando rótulos de texto em números.
123456789101112import seaborn as sns import pandas as pd from sklearn.preprocessing import LabelEncoder # Load Titanic dataset data = sns.load_dataset("titanic") # Label encode the 'sex' column encoder = LabelEncoder() data["sex_encoded"] = encoder.fit_transform(data["sex"]) print(data[["sex", "sex_encoded"]].head())
Codificação ordinal atribui valores inteiros ordenados às categorias com base em sua classificação natural. Este método preserva a ordem inerente em variáveis categóricas ordinais, como níveis de escolaridade ("high school", "bachelor", "master", "doctorate").
123456789101112131415161718import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # Define the order of passenger classes: First < Second < Third class_order = ["First", "Second", "Third"] # Apply ordered categorical encoding data["class_encoded"] = pd.Categorical( data["class"], categories=class_order, ordered=True ).codes + 1 # +1 to make classes start from 1 instead of 0 # Display sample output print(data[["class", "class_encoded"]].head())
Tenha cuidado ao codificar variáveis categóricas. One-hot encoding pode introduzir o dummy variable trap – uma situação em que as variáveis ficam altamente correlacionadas, o que pode confundir alguns modelos. Para evitar isso, é possível remover uma das colunas dummy. Label encoding impõe uma relação ordinal entre as categorias, o que pode não ser apropriado para dados nominais.
Obrigado pelo seu feedback!