0Pricing
Learn AI with Python · Lección

Distribución de características y análisis del objetivo

Análisis de las relaciones entre características y objetivo, detección del desequilibrio de clases e información mutua.

Distribución de características y análisis del objetivo es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Por qué analizar las características en relación con el objetivo?

El objetivo es la variable que desea predecir. El propósito del EDA para el modelado es descubrir qué características están realmente relacionadas con ese objetivo.

En esta lección se estudian los gráficos de características frente al objetivo, la medición de la capacidad informativa mediante información mutua, la detección del desequilibrio entre clases y la corrección de la asimetría mediante transformaciones.

Característica frente al objetivo — objetivo numérico

Cuando el objetivo es numérico, un diagrama de dispersión de feature frente a target muestra si la característica contiene señal.

Una tendencia clara significa que la característica es predictiva; una nube sin forma definida probablemente indica que no lo es.

import seaborn as sns
import matplotlib.pyplot as plt

sns.scatterplot(x="rooms", y="price", data=df, alpha=0.4)
plt.show()

Característica frente al objetivo — objetivo categórico

Cuando el objetivo es una etiqueta de clase, compare la distribución de la característica dentro de cada clase. Las KDE superpuestas indican que la característica separa mal las clases; las curvas bien separadas indican que es útil.

sns.kdeplot(data=df, x="balance", hue="churned", common_norm=False, fill=True)
plt.title("Balance by churn status")
plt.show()

Comparación de las distribuciones de clases con diagramas de caja

Los diagramas de caja agrupados son otra forma de observar las relaciones entre características y clases: coloque la clase objetivo en el eje x y la característica en el eje y.

Las medianas diferentes entre clases indican que la característica ayuda a distinguirlas.

sns.boxplot(x="churned", y="tenure", data=df)
plt.show()

Detección del desequilibrio entre clases

El desequilibrio entre clases ocurre cuando una clase objetivo supera ampliamente en número a otra (por ejemplo, 95 % de casos sin fraude y 5 % de casos con fraude). Esto puede hacer que la exactitud resulte engañosa y sesgar los modelos hacia la clase mayoritaria.

Compruébelo con un recuento sencillo de valores del objetivo.

print(df["churned"].value_counts())
# 0    9200
# 1     800

value_counts(normalize=True) para proporciones

Los recuentos absolutos pueden ocultar la gravedad del desequilibrio. normalize=True convierte los recuentos en proporciones, de modo que puede interpretarlos directamente como porcentajes.

print(df["churned"].value_counts(normalize=True))
# 0    0.92
# 1    0.08   -> only 8% positive class

Por qué importa el desequilibrio

Con un 92 % de casos negativos, un modelo que siempre predice «no» alcanza una exactitud del 92 %, aunque no sirva para nada. Por eso debe comprobar el desequilibrio desde el principio.

Entre las soluciones se incluyen el remuestreo (sobremuestrear la minoritaria o submuestrear la mayoritaria), los pesos de clase o métricas como precisión, exhaustividad y F1 en lugar de la exactitud.

Información mutua — medición de la capacidad informativa

La información mutua mide cuánto reduce la incertidumbre sobre el objetivo el hecho de conocer una característica. A diferencia de la correlación, también captura relaciones no lineales.

Para objetivos de clasificación, scikit-learn proporciona 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)))

Clasificación de características por información mutua

Colocar las puntuaciones de IM en una Series ordenada proporciona una clasificación rápida de la importancia de las características. Una IM más alta significa que la característica aporta más información sobre el objetivo.

Es un excelente filtro inicial antes de entrenar cualquier 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)

Transformación logarítmica para características asimétricas

Las características con asimetría positiva (ingresos, recuentos, precios) suelen comportarse mejor después de una transformación logarítmica, que comprime la cola larga para acercarla a una forma más simétrica.

Utilice np.log1p (logaritmo de 1 + x) para gestionar los ceros de forma segura.

import numpy as np

df["income_log"] = np.log1p(df["income"])
print(df["income"].skew(), "->", df["income_log"].skew())

Antes y después: visualización de la transformación

Confirme siempre que una transformación ha sido útil representando los datos antes y después. La versión logarítmica debería parecerse más a una distribución simétrica con forma de campana.

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()

Comprobación rápida: corrección de una característica asimétrica

Una característica presenta una fuerte asimetría positiva y contiene algunos valores cero.

Resumen: análisis de características y objetivo

Ha aprendido a relacionar las características con el objetivo de predicción:

  • Diagramas de dispersión, KDE y diagramas de caja para observar la señal entre características y objetivo
  • value_counts(normalize=True) para detectar y cuantificar el desequilibrio entre clases
  • mutual_info_classif para clasificar las características según su capacidad informativa, incluidas las relaciones no lineales
  • np.log1p para reducir la asimetría positiva de las características

Con esto termina el análisis exploratorio de datos. A continuación: recopilación de datos mediante API web.

Preguntas frecuentes

¿La lección «Distribución de características y análisis del objetivo» es gratis?

Sí — el texto completo de «Distribución de características y análisis del objetivo» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué aprenderé en «Distribución de características y análisis del objetivo»?

Análisis de las relaciones entre características y objetivo, detección del desequilibrio de clases e información mutua. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn AI with Python?

No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Distribución de características y análisis del objetivo»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?

Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Flujo de trabajo de EDA y perfilado de datos
  2. Análisis univariante
  3. Análisis bivariante y multivariante
  4. Distribución de características y análisis del objetivo
← Volver a Learn AI with Python