Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Scikit-learn desde cero, Unidad 10 — Feature engineering con scikit-learn, 10.1 — Transformadores personalizados ·

fit y transform

fit y transform: Crear Transformadores Personalizados con Scikit-learn

Introducción

La creación de transformadores personalizados es una habilidad valiosa para cualquier practicante en el campo de la ciencia de datos. Los transformadores permiten manipular y preprocesar los datos antes del entrenamiento de modelos, lo cual puede tener un impacto significativo en la precisión de las predicciones. En Scikit-learn, puedes crear tus propios transformadores para adaptarte a tus necesidades específicas. Este artículo te guiará paso a paso en cómo hacerlo y cómo evitar algunos errores comunes.

Explicación Principal con Ejemplos

En Scikit-learn, un transformador es una clase que implementa los métodos fit y transform. El método fit se utiliza para ajustar el modelo al conjunto de datos, mientras que transform realiza la transformación en sí. Veamos cómo crear un transformador personalizado paso a paso.

Creando un Transformador Personalizado

Primero, importa las bibliotecas necesarias:

from sklearn.base import BaseEstimator, TransformerMixin
import numpy as np

A continuación, crea una clase que herede de BaseEstimator y TransformerMixin. Esta clase debe implementar los métodos fit y transform.

class CustomScaler(BaseEstimator, TransformerMixin):
    def fit(self, X, y=None):
        # Aquí se ajusta el transformador. En este caso, simplemente calculamos la media.
        self.mean_ = np.mean(X)
        return self
    
    def transform(self, X, y=None):
        # Realizamos la transformación en los datos
        return X - self.mean_

En este ejemplo, hemos creado un escalador personalizado que resta la media de cada columna del conjunto de datos. Este es sólo un ejemplo simple; puedes adaptarlo a tus necesidades específicas.

Integrando el Transformador Personalizado en un Pipeline

Una vez que tienes tu transformador personalizado, puedes integrarlo en un pipeline para asegurarte de que se aplique correctamente durante la fase de entrenamiento y predicción.

from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston

# Cargar el conjunto de datos de Boston
boston = load_boston()
X, y = boston.data, boston.target

# Crear un pipeline con el CustomScaler y LinearRegression
pipeline = Pipeline([
    ('custom_scaler', CustomScaler()),
    ('regressor', LinearRegression())
])

# Entrenar el modelo
pipeline.fit(X, y)

# Realizar predicciones
predictions = pipeline.predict(X)

Errores Típicos / Trampas

Crear transformadores personalizados puede llevar tiempo y requiere una comprensión profunda de cómo funcionan los datos. A continuación, se detallan algunos errores comunes que debes evitar:

  1. No inicializar correctamente self: Olvidar inicializar las variables necesarias en el método __init__ puede causar problemas en la transformación.
  1. No implementar fit_transform adecuadamente: Asegúrate de que tu transformador pueda manejar tanto X como y, especialmente si es necesario ajustar parámetros basados en ambos conjuntos de datos.
  1. Olvidar el método __init__: Si no defines un método __init__, Scikit-learn no podrá inicializar correctamente tu transformador personalizado, lo que puede generar errores difíciles de diagnosticar.
  1. No manejar correctamente tipos de datos: Asegúrate de que tus métodos fit y transform puedan manejar diferentes tipos de datos (por ejemplo, numéricos, categóricos) de manera adecuada.

Checklist Accionable

Para asegurarte de crear transformadores personalizados efectivos y sin errores, sigue estos puntos:

  1. Define correctamente el método __init__.
  2. Implementa los métodos fit y transform correctamente.
  3. Asegúrate de que tu transformador sea compatible con diferentes tipos de datos.
  4. Prueba tus transformadores en una variedad de conjuntos de datos para asegurarte de su robustez.
  5. Documenta tu código adecuadamente, incluyendo cómo funciona y cuándo usarlo.

Cierre: Siguientes Pasos

Ahora que has aprendido a crear transformadores personalizados con Scikit-learn, es el momento de poner este conocimiento en práctica:

  1. Prueba tus transformadores en proyectos reales para ver su impacto en la precisión del modelo.
  2. Explora más funcionalidades de Scikit-learn, como ColumnTransformer, que puede ayudarte a manejar diferentes tipos de datos de manera eficiente.
  3. Participa en competencias de Kaggle o proyectos de código abierto para mejorar tus habilidades en el preprocesamiento y el ajuste de modelos.

Crear transformadores personalizados es una habilidad valiosa para cualquier científico de datos. Con práctica y experimentación, podrás adaptar los modelos a tus necesidades específicas y mejorar la precisión de tus predicciones significativamente.

Contacto

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