0Pricing
Learn AI with Python · Lección

Target encoding y gestión avanzada de variables categóricas

Target encoding, codificación por frecuencia, codificación binaria y embeddings para columnas de alta cardinalidad.

Target encoding y gestión avanzada de variables categóricas es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 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.

El problema de la codificación categórica

Los modelos necesitan números, pero las categorías son texto. La codificación one-hot funciona con pocas categorías, pero las características de alta cardinalidad (miles de ciudades o productos) crean demasiadas columnas.

Limitaciones de la codificación one-hot y de etiquetas

La codificación one-hot hace que la dimensionalidad se dispare. La codificación de etiquetas sin más inventa un orden falso (la ciudad 5 no es mayor que la ciudad 2). Para los datos de alta cardinalidad necesitamos codificaciones más inteligentes.

Qué es la codificación basada en el objetivo

La codificación basada en el objetivo reemplaza cada categoría por la media del objetivo correspondiente a esa categoría. Una ciudad se convierte en la tasa media de abandono de los clientes de esa ciudad: un único número informativo.

import pandas as pd

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

El peligro del sobreajuste

Las categorías poco frecuentes, con pocas filas, obtienen medias extremas que filtran el objetivo y provocan sobreajuste. Una categoría que aparece una sola vez copiaría exactamente esa única etiqueta. Esto se corrige mediante el suavizado.

Suavizado de la estimación

El suavizado combina la media de la categoría con la media global, ponderadas según la cantidad de muestras que tiene la categoría. Las categorías poco frecuentes se acercan a la media global, lo que reduce la varianza.

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"])

La biblioteca category_encoders

El paquete category_encoders implementa estos codificadores con una API de scikit-learn, por lo que se integran en pipelines y se aplican de forma coherente a los conjuntos de entrenamiento y de prueba.

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)

Evitar la fuga de información en la práctica

Aj momentos siempre el codificador usando únicamente los datos de entrenamiento y, después, transforme los datos de validación/prueba. Mejor aún, utilice validación cruzada o codificación out-of-fold para que cada fila se codifique con datos que la excluyan.

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

Codificación binaria

BinaryEncoder convierte las categorías en dígitos binarios y utiliza solo log2(N) columnas en lugar de N. Es una solución intermedia y compacta entre la codificación one-hot y la codificación target.

import category_encoders as ce

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

Otros codificadores útiles

category_encoders también ofrece CountEncoder (frecuencia de cada categoría), LeaveOneOutEncoder (media del objetivo excluyendo la fila actual) y CatBoostEncoder (estadísticas ordenadas del objetivo).

import category_encoders as ce

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

Gestión de una cardinalidad alta

Para una cardinalidad muy alta: la codificación target/count comprime los datos en una columna, la codificación binaria sigue siendo compacta y agrupar las categorías poco frecuentes en un grupo "other" reduce el ruido. Elija el método según la cardinalidad y el riesgo de fuga de información.

import pandas as pd

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

Elegir un codificador

Pocas categorías: one-hot. Modelos de árboles con muchas categorías: codificación target o CatBoost. Si necesita compacidad: binaria. Evite siempre la fuga de información ajustando el codificador solo con los datos de entrenamiento y utilizando suavizado o esquemas out-of-fold.

Comprobación rápida

Compruebe sus conocimientos sobre la codificación de variables categóricas.

Repaso

Repaso: la codificación target reemplaza una categoría por la media de su objetivo y utiliza suavizado para moderar el efecto de las categorías poco frecuentes. Utilice category_encoders (TargetEncoder, BinaryEncoder, CatBoost/LeaveOneOut) y ajústelo solo con los datos de entrenamiento o mediante out-of-fold para evitar la fuga de información. Los codificadores compactos gestionan características de alta cardinalidad que la codificación one-hot no puede manejar.

Preguntas frecuentes

¿La lección «Target encoding y gestión avanzada de variables categóricas» es gratis?

Sí — el texto completo de «Target encoding y gestión avanzada de variables categóricas» 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 «Target encoding y gestión avanzada de variables categóricas»?

Target encoding, codificación por frecuencia, codificación binaria y embeddings para columnas de alta cardinalidad. 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 3 de 4.

¿Cuánto tiempo toma la lección «Target encoding y gestión avanzada de variables categóricas»?

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. Métodos de selección de características
  2. Creación de características de interacción y polinómicas
  3. Target encoding y gestión avanzada de variables categóricas
  4. Ingeniería automatizada de características con Featuretools
← Volver a Learn AI with Python