Codificação de variáveis categóricas
Codificação de rótulos, codificação one-hot, codificação ordinal e pd.get_dummies() em comparação com OrdinalEncoder do sklearn.
Codificação de variáveis categóricas é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
Por que codificar categorias?
A maioria dos modelos de aprendizado de máquina precisa de NUMBERS, e não de rótulos de texto como "vermelho" ou "pequeno". A codificação converte variáveis categóricas em uma forma numérica, preservando seu significado.
Ordinal versus nominal
As categorias ORDINAL têm uma ordem natural (pequeno < médio < grande). As categorias NOMINAL não têm (vermelho, verde, azul). A codificação correta depende do tipo de categoria que você possui.
Codificação por rótulos para dados ordinais
LabelEncoder mapeia cada categoria para um número inteiro. Ele é apropriado para dados ORDINAL, nos quais a ordem dos números inteiros é significativa.
from sklearn.preprocessing import LabelEncoder
sizes = ["small", "large", "medium", "small"]
le = LabelEncoder()
print(le.fit_transform(sizes)) # integers (alphabetical by default)O perigo com dados nominais
Aplicar a codificação por rótulos a dados NOMINAL é arriscado: o modelo pode interpretar vermelho=0, verde=1, azul=2 como se verde estivesse "entre" vermelho e azul, inventando uma ordem falsa. Em vez disso, use uma coluna binária por categoria.
Codificação de uma coluna por categoria com get_dummies
pd.get_dummies cria uma coluna binária para cada categoria. Exatamente uma coluna recebe o valor 1 por linha, sem ordem implícita, o que é ideal para variáveis nominais.
import pandas as pd
df = pd.DataFrame({"color": ["red", "green", "blue", "red"]})
print(pd.get_dummies(df, columns=["color"]))A armadilha das variáveis indicadoras
Quando k categorias geram k colunas, elas são perfeitamente colineares (a soma é sempre 1). Essa armadilha das variáveis indicadoras quebra os modelos lineares. Remova uma coluna para corrigi-la.
drop_first
drop_first=True remove uma categoria, deixando k-1 colunas. A categoria removida torna-se a referência implícita (todos os valores são zero), eliminando a colinearidade.
print(pd.get_dummies(df, columns=["color"], drop_first=True))
# one fewer column; the dropped color is the baselinesklearn OrdinalEncoder
Para fluxos de processamento, OrdinalEncoder é o equivalente do sklearn à codificação por rótulos para FEATURES e permite especificar explicitamente a ordem das categorias.
from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder(categories=[["small", "medium", "large"]])
print(enc.fit_transform([["medium"], ["large"], ["small"]]))sklearn OneHotEncoder
OneHotEncoder é a ferramenta de codificação de uma coluna por categoria adequada a fluxos de processamento. Ele aprende as categorias a partir dos dados de treinamento e aplica o mesmo mapeamento a dados novos, algo essencial em produção.
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"], ["green"], ["blue"]]))Lidando com categorias desconhecidas
Os dados de teste podem conter categorias nunca vistas durante o treinamento. Defina handle_unknown="ignore" para que OneHotEncoder produza todos os zeros em vez de gerar um erro.
ohe = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
ohe.fit([["red"], ["green"]])
print(ohe.transform([["blue"]])) # all zeros, no errorColunas de alta cardinalidade
Fazer a codificação de uma coluna com milhares de valores exclusivos faz o número de características crescer enormemente. Para alta cardinalidade, considere a codificação pelo alvo, a transformação por dispersão ou o agrupamento de categorias raras em "outras".
Verificação rápida
Teste seus conhecimentos sobre codificação.
Recapitulação
Kit de ferramentas de codificação:
- Dados ordinais -> codificação inteira (
LabelEncoder/OrdinalEncoder) - Dados nominais -> uma coluna binária por categoria (
pd.get_dummies/OneHotEncoder) drop_first=Trueevita a armadilha das variáveis indicadorashandle_unknown="ignore"para categorias de teste desconhecidas- Fique atento ao crescimento do número de colunas em dados de alta cardinalidade
Perguntas Frequentes
A aula “Codificação de variáveis categóricas” é grátis?
Sim — o texto completo de “Codificação de variáveis categóricas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Codificação de variáveis categóricas”?
Codificação de rótulos, codificação one-hot, codificação ordinal e pd.get_dummies() em comparação com OrdinalEncoder do sklearn. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Codificação de variáveis categóricas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Detecção e remoção de valores discrepantes
- Codificação de variáveis categóricas
- Escalonamento de atributos: normalização e padronização
- Construindo pipelines de pré-processamento