0Pricing
Learn AI with Python · Aula

Codificação do alvo e tratamento avançado de dados categóricos

Codificação do alvo, codificação por frequência, codificação binária e embeddings para colunas de alta cardinalidade.

Codificação do alvo e tratamento avançado de dados categóricos é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 3 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.

O problema da codificação categórica

Os modelos precisam de números, mas as categorias são texto. A codificação por indicadores funciona para poucas categorias, mas atributos de alta cardinalidade (milhares de cidades, produtos) criam colunas demais.

Limitações da codificação por indicadores e por rótulos

A codificação por indicadores faz a dimensionalidade explodir. A codificação simples por rótulos inventa uma ordenação falsa (a cidade 5 não é maior que a cidade 2). Para dados de alta cardinalidade, precisamos de codificações mais inteligentes.

O que é a codificação pelo alvo

A codificação pelo alvo substitui cada categoria pela média do alvo correspondente àquela categoria. Uma cidade se torna a taxa média de cancelamento dos clientes daquela cidade, um único número informativo.

import pandas as pd

means = df.groupby("city")["target"].mean()
df["city_encoded"] = df["city"].map(means)

O perigo do sobreajuste

Categorias raras com poucas linhas obtêm médias extremas que vazam o alvo e causam sobreajuste. Uma categoria observada uma única vez copiaria exatamente aquele único rótulo. Corrigimos isso com suavização.

Suavizando a estimativa

Suavização combina a média da categoria com a média global, ponderando-as pela quantidade de amostras da categoria. Categorias raras tendem à média global, reduzindo a variância.

import pandas as pd

global_mean = df["target"].mean()
agg = df.groupby("city")["target"].agg(["mean", "count"])
smoothing = 10
agg["enc"] = (agg["count"] * agg["mean"] + smoothing * global_mean) / (agg["count"] + smoothing)
df["city_enc"] = df["city"].map(agg["enc"])

A biblioteca category_encoders

O pacote category_encoders implementa esses codificadores com uma API do scikit-learn, para que se encaixem em fluxos de processamento e sejam aplicados de forma consistente aos conjuntos de treinamento e teste.

import category_encoders as ce

encoder = ce.TargetEncoder(cols=["city", "product"], smoothing=10)
X_enc = encoder.fit_transform(X_train, y_train)
X_test_enc = encoder.transform(X_test)

Evitando vazamento na prática

Sempre faça fit do codificador apenas com os dados de treinamento e depois aplique transform à validação/teste. Melhor ainda: use validação cruzada ou codificação fora da dobra, para que cada linha seja codificada com dados que não a incluam.

import category_encoders as ce
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression

pipe = make_pipeline(
    ce.TargetEncoder(cols=["city"]),
    LogisticRegression(),
)
# fit inside CV to encode without leakage

Codificação binária

BinaryEncoder converte categorias em dígitos binários, usando apenas log2(N) colunas em vez de N. É uma solução intermediária e compacta entre a codificação one-hot e a codificação do alvo.

import category_encoders as ce

encoder = ce.BinaryEncoder(cols=["product_id"])
X_enc = encoder.fit_transform(X_train)
# 256 categories -> 8 binary columns

Outros codificadores úteis

category_encoders também oferece CountEncoder (frequência de cada categoria), LeaveOneOutEncoder (média do alvo excluindo a linha atual) e CatBoostEncoder (estatísticas ordenadas do alvo).

import category_encoders as ce

count_enc = ce.CountEncoder(cols=["city"])
loo_enc = ce.LeaveOneOutEncoder(cols=["city"])

Lidando com alta cardinalidade

Para cardinalidade muito alta: a codificação do alvo/contagem comprime os dados em uma coluna, a codificação binária permanece compacta e agrupar categorias raras em um grupo "outro" reduz o ruído. Escolha com base na cardinalidade e no risco de vazamento.

import pandas as pd

freq = df["product"].value_counts()
rare = freq[freq < 20].index
df["product"] = df["product"].replace(rare, "other")

Escolhendo um codificador

Poucas categorias: one-hot. Modelos de árvore com muitas categorias: codificação do alvo ou CatBoost. Se precisar de compactação: binária. Sempre evite vazamento fazendo fit apenas com os dados de treinamento e usando suavização ou esquemas fora da dobra.

Verificação rápida

Teste seus conhecimentos sobre codificação categórica.

Recapitulação

Recapitulação: a codificação do alvo substitui uma categoria pela média do seu alvo, usando suavização para controlar categorias raras. Use category_encoders (TargetEncoder, BinaryEncoder, CatBoost/LeaveOneOut) e faça fit apenas com os dados de treinamento ou fora da dobra para evitar vazamento. Codificadores compactos lidam com recursos de alta cardinalidade que a codificação one-hot não consegue tratar.

Perguntas Frequentes

A aula “Codificação do alvo e tratamento avançado de dados categóricos” é grátis?

Sim — o texto completo de “Codificação do alvo e tratamento avançado de dados categóricos” é 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 do alvo e tratamento avançado de dados categóricos”?

Codificação do alvo, codificação por frequência, codificação binária e embeddings para colunas de alta cardinalidade. 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 3 de 4.

Quanto tempo leva a aula “Codificação do alvo e tratamento avançado de dados categóricos”?

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

  1. Métodos de seleção de atributos
  2. Criando atributos de interação e polinomiais
  3. Codificação do alvo e tratamento avançado de dados categóricos
  4. Engenharia automatizada de atributos com Featuretools
← Voltar para Learn AI with Python