Distribuição de atributos e análise do alvo
Análise das relações entre atributos e alvo, detecção de desequilíbrio entre classes e informação mútua.
Distribuição de atributos e análise do alvo é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 4 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 analisar os atributos em relação ao alvo?
O alvo é a variável que você deseja prever. O objetivo da EDA para modelagem é descobrir quais atributos realmente se relacionam com esse alvo.
Esta lição aborda gráficos de atributo versus alvo, a medição da capacidade informativa com informação mútua, a detecção de desequilíbrio entre classes e a correção da assimetria com transformações.
Atributo versus alvo — alvo numérico
Para um alvo numérico, um gráfico de dispersão de feature versus target mostra se o atributo contém sinal.
Uma tendência clara significa que o atributo é preditivo; uma nuvem sem forma provavelmente indica que ele não é.
import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(x="rooms", y="price", data=df, alpha=0.4)
plt.show()Atributo versus alvo — alvo categórico
Quando o alvo é um rótulo de classe, compare a distribuição do atributo dentro de cada classe. KDEs sobrepostos significam que o atributo separa mal as classes; curvas bem separadas indicam que ele é útil.
sns.kdeplot(data=df, x="balance", hue="churned", common_norm=False, fill=True)
plt.title("Balance by churn status")
plt.show()Comparando distribuições de classes com gráficos de caixa
Os gráficos de caixa agrupados são outra forma de visualizar as relações entre atributo e classe: coloque a classe do alvo no eixo x e o atributo no eixo y.
Medianas diferentes entre as classes indicam que o atributo ajuda a distingui-las.
sns.boxplot(x="churned", y="tenure", data=df)
plt.show()Detectando desequilíbrio entre classes
O desequilíbrio entre classes ocorre quando uma classe do alvo supera amplamente outra em quantidade (por exemplo, 95% sem fraude e 5% com fraude). Isso torna a acurácia enganosa e direciona os modelos para a classe majoritária.
Verifique isso com uma simples contagem de valores no alvo.
print(df["churned"].value_counts())
# 0 9200
# 1 800value_counts(normalize=True) para proporções
As contagens brutas podem ocultar a gravidade do desequilíbrio. normalize=True transforma as contagens em proporções, permitindo interpretá-las diretamente como porcentagens.
print(df["churned"].value_counts(normalize=True))
# 0 0.92
# 1 0.08 -> only 8% positive classPor que o desequilíbrio é importante
Com 92% de valores negativos, um modelo que sempre prevê "não" obtém 92% de acurácia, embora seja inútil. Por isso, você deve observar o desequilíbrio desde o início.
As soluções incluem reamostragem (sobreamostrar a minoria ou subamostrar a maioria), pesos de classe ou métricas como precisão, revocação e F1 em vez de acurácia.
Informação mútua — medindo a capacidade informativa
Informação mútua mede quanto saber o valor de um atributo reduz a incerteza sobre o alvo. Diferentemente da correlação, ela também captura relações não lineares.
Para alvos de classificação, o scikit-learn fornece mutual_info_classif.
from sklearn.feature_selection import mutual_info_classif
X = df[["balance", "tenure", "rooms"]]
y = df["churned"]
mi = mutual_info_classif(X, y, random_state=42)
print(dict(zip(X.columns, mi)))Classificando atributos por informação mútua
Colocar as pontuações de MI em uma Series ordenada fornece uma classificação rápida da importância dos atributos. Uma MI mais alta significa que o atributo contém mais informações sobre o alvo.
Este é um ótimo filtro inicial antes de treinar qualquer modelo.
import pandas as pd
from sklearn.feature_selection import mutual_info_classif
mi = mutual_info_classif(X, y, random_state=42)
scores = pd.Series(mi, index=X.columns).sort_values(ascending=False)
print(scores)Transformação logarítmica para atributos assimétricos
Atributos com assimetria à direita (renda, contagens, preços) geralmente se comportam melhor após uma transformação logarítmica, que comprime a cauda longa, aproximando-a de um formato mais simétrico.
Use np.log1p (logaritmo de 1 + x) para lidar com zeros com segurança.
import numpy as np
df["income_log"] = np.log1p(df["income"])
print(df["income"].skew(), "->", df["income_log"].skew())Antes e depois: visualizando a transformação
Sempre confirme se uma transformação ajudou, fazendo um gráfico do antes e do depois. A versão logarítmica deve se parecer mais com uma curva de sino simétrica.
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 2)
df["income"].hist(ax=ax[0]); ax[0].set_title("Raw")
np.log1p(df["income"]).hist(ax=ax[1]); ax[1].set_title("log1p")
plt.show()Verificação rápida: corrigindo um atributo assimétrico
Um atributo apresenta forte assimetria à direita e contém alguns valores zero.
Recapitulação: análise de atributos e do alvo
Você aprendeu a relacionar os atributos ao alvo da previsão:
- Gráficos de dispersão, KDE e gráficos de caixa para visualizar o sinal entre atributo e alvo
value_counts(normalize=True)para detectar e quantificar o desequilíbrio entre classesmutual_info_classifpara classificar os atributos pela capacidade informativa, incluindo relações não linearesnp.log1ppara reduzir a assimetria à direita dos atributos
Isso conclui a Análise Exploratória de Dados. A seguir: coletando dados de APIs da web.
Perguntas Frequentes
A aula “Distribuição de atributos e análise do alvo” é grátis?
Sim — o texto completo de “Distribuição de atributos e análise do alvo” é 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 “Distribuição de atributos e análise do alvo”?
Análise das relações entre atributos e alvo, detecção de desequilíbrio entre classes e informação mútua. 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 4 de 4.
Quanto tempo leva a aula “Distribuição de atributos e análise do alvo”?
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
- Fluxo de trabalho de EDA e criação de perfil dos dados
- Análise univariada
- Análise bivariada e multivariada
- Distribuição de atributos e análise do alvo