Codificación de variables categóricas
Codificación de etiquetas, one-hot y ordinal; pd.get_dummies() frente a sklearn OrdinalEncoder.
Codificación de variables categóricas es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 2 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é codificar categorías?
La mayoría de los modelos de machine learning necesitan NÚMEROS, no etiquetas de texto como "red" o "small". La codificación convierte las variables categóricas a formato numérico y conserva su significado.
Ordinal frente a nominal
Las categorías ordinales tienen un orden natural (small < medium < large). Las categorías nominales no lo tienen (red, green, blue). La codificación adecuada depende del tipo de categorías que tenga.
Codificación de etiquetas para datos ordinales
LabelEncoder asigna un entero a cada categoría. Es adecuado para datos ORDINALES, en los que el orden de los enteros tiene significado.
from sklearn.preprocessing import LabelEncoder
sizes = ["small", "large", "medium", "small"]
le = LabelEncoder()
print(le.fit_transform(sizes)) # integers (alphabetical by default)El peligro con las categorías nominales
Aplicar la codificación de etiquetas a datos NOMINALES es arriesgado: el modelo puede interpretar red=0, green=1, blue=2 como si green estuviera "entre" red y blue, inventando un orden falso. Utilice la codificación one-hot en su lugar.
Codificación one-hot con get_dummies
pd.get_dummies crea una columna binaria por categoría. Exactamente una columna vale 1 en cada fila, sin ningún orden implícito, lo que resulta ideal para las variables nominales.
import pandas as pd
df = pd.DataFrame({"color": ["red", "green", "blue", "red"]})
print(pd.get_dummies(df, columns=["color"]))La trampa de las variables ficticias
Cuando k categorías producen k columnas, estas son perfectamente colineales (siempre suman 1). Esta trampa de las variables ficticias impide que funcionen los modelos lineales. Elimine una columna para solucionarlo.
drop_first
drop_first=True elimina una categoría y deja k-1 columnas. La categoría eliminada se convierte en la categoría base implícita (todos ceros), lo que elimina la colinealidad.
print(pd.get_dummies(df, columns=["color"], drop_first=True))
# one fewer column; the dropped color is the baselinesklearn OrdinalEncoder
Para los pipelines, OrdinalEncoder es el equivalente de sklearn a la codificación de etiquetas para las CARACTERÍSTICAS y permite especificar explícitamente el orden de las categorías.
from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder(categories=[["small", "medium", "large"]])
print(enc.fit_transform([["medium"], ["large"], ["small"]]))sklearn OneHotEncoder
OneHotEncoder es la herramienta one-hot adecuada para pipelines. Aprende las categorías a partir de los datos de entrenamiento y aplica la misma correspondencia a los datos nuevos, algo crucial en producción.
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"], ["green"], ["blue"]]))Gestión de categorías desconocidas
Los datos de prueba pueden contener categorías que nunca aparecieron durante el entrenamiento. Establezca handle_unknown="ignore" para que OneHotEncoder genere todo ceros en lugar de producir un error.
ohe = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
ohe.fit([["red"], ["green"]])
print(ohe.transform([["blue"]])) # all zeros, no errorColumnas de alta cardinalidad
Aplicar codificación one-hot a una columna con miles de valores únicos dispara el número de características. Para una cardinalidad alta, considere la codificación por objetivo, el hashing o agrupar las categorías poco frecuentes en "other".
Comprobación rápida
Compruebe sus conocimientos sobre codificación.
Resumen
Herramientas de codificación:
- Datos ordinales -> codificación mediante enteros (
LabelEncoder/OrdinalEncoder) - Datos nominales -> one-hot (
pd.get_dummies/OneHotEncoder) drop_first=Trueevita la trampa de las variables ficticiashandle_unknown="ignore"para categorías de prueba desconocidas- Preste atención al crecimiento descontrolado de las columnas de alta cardinalidad
Preguntas frecuentes
¿La lección «Codificación de variables categóricas» es gratis?
Sí — el texto completo de «Codificación 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 «Codificación de variables categóricas»?
Codificación de etiquetas, one-hot y ordinal; pd.get_dummies() frente a sklearn OrdinalEncoder. 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 2 de 4.
¿Cuánto tiempo toma la lección «Codificación 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
- Detección y eliminación de valores atípicos
- Codificación de variables categóricas
- Escalado de características: normalización y estandarización
- Creación de pipelines de preprocesamiento