Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Scikit-learn desde cero, Unidad 8 — Pipelines, 8.2 — Construcción de pipelines ·

ColumnTransformer

ColumnTransformer: Construcción de pipelines en Scikit-learn

Introducción

En la construcción de modelos de aprendizaje automático, el preprocesamiento de los datos es una etapa crucial. Las características pueden variar significativamente en sus escalas y distribuciones, lo que puede afectar la precisión del modelo. ColumnTransformer es una herramienta poderosa de Scikit-learn que permite aplicar diferentes transformaciones a columnas específicas de un DataFrame de Pandas sin tener que hacerlo manualmente. Este artículo te guiará en cómo usar ColumnTransformer para mejorar tu flujo de trabajo con modelos de machine learning.

Explicación principal

El objetivo principal de ColumnTransformer es permitir la aplicación de transformaciones personalizadas a columnas específicas del DataFrame. Esto se logra utilizando un diccionario donde las claves son los nombres de las columnas y los valores son instancias de transformadores. Aquí tienes una breve explicación con un ejemplo:

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder

# Definir el diccionario de transformaciones
preprocessor = ColumnTransformer(
    transformers=[
        ('num', StandardScaler(), ['edad', 'ingresos']),  # Escalado estándar para columnas numéricas
        ('cat', OneHotEncoder(), ['genero'])              # Codificación one-hot para columna categórica
    ])

# Asumiendo que X es el DataFrame de entrada
X_transformed = preprocessor.fit_transform(X)

Errores típicos / trampas

  1. No especificar las columnas a transformar correctamente: Es fácil olvidarse de incluir todas las columnas relevantes en la lista de transformaciones, lo que puede resultar en errores silenciosos o modelos mal entrenados.
  1. Aplicar el mismo transformador a diferentes tipos de datos sin considerar sus características: No es adecuado aplicar el mismo transformador como StandardScaler a variables categóricas y numéricas, ya que estos requieren tratamientos distintos. Si esto ocurre, los modelos pueden verse afectados.
  1. Ignorar la codificación de valores faltantes: Es importante manejar adecuadamente las columnas con valores faltantes antes de aplicar transformaciones. No hacerlo puede resultar en errores o modelos inestables.

Checklist accionable

A continuación, se presentan algunos pasos que puedes seguir para asegurarte de usar ColumnTransformer correctamente:

  1. Identificar y separar las columnas numéricas y categóricas: Antes de aplicar cualquier transformación, es necesario identificar cuáles son las columnas numéricas y categóricas en tu conjunto de datos.
  1. Elige los transformadores adecuados para cada tipo de dato: Asegúrate de que estás usando el transformador correcto para cada columna. Por ejemplo, StandardScaler para variables numéricas y OneHotEncoder para variables categóricas.
  1. Manejar valores faltantes adecuadamente: Antes de aplicar cualquier transformación, asegúrate de manejar los valores faltantes en tus datos.
  1. Verifica la coherencia del DataFrame resultante: Después de aplicar las transformaciones, verifica que el DataFrame resultante tenga la estructura esperada y que todas las columnas han sido procesadas correctamente.
  1. Documenta tu proceso: Documenta cada paso en tu proceso de preprocesamiento para asegurarte de que puedes replicarlo fácilmente cuando sea necesario.

Cierre

Siguientes pasos

  • Prueba ColumnTransformer con diferentes datasets: Aplica lo aprendido a diferentes conjuntos de datos y modelos para ver cómo se comporta ColumnTransformer.
  • Explora transformaciones más avanzadas: Aprende sobre otras transformaciones como QuantileTransformer, RobustScaler, entre otros.
  • Implementa ColumnTransformer en tu flujo de trabajo habitual: Integra ColumnTransformer en tus pipelines habituales para preprocesar datos antes del entrenamiento.

Siguiendo estos consejos y utilizando ColumnTransformer de manera efectiva, podrás mejorar significativamente la calidad y el rendimiento de tus modelos de machine learning.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).