0Pricing
Learn AI with Python · Aula

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     800

value_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 class

Por 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 classes
  • mutual_info_classif para classificar os atributos pela capacidade informativa, incluindo relações não lineares
  • np.log1p para 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

  1. Fluxo de trabalho de EDA e criação de perfil dos dados
  2. Análise univariada
  3. Análise bivariada e multivariada
  4. Distribuição de atributos e análise do alvo
← Voltar para Learn AI with Python