Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Scikit-learn desde cero, Unidad 12 — Mini-proyecto completo con scikit-learn, 12.1 — Proyecto guiado ·

Pipeline completo

Pipeline completo: Proyecto guiado con Scikit-learn

Introducción

En este proyecto, aplicaremos los conocimientos adquiridos sobre la preparación y entrenamiento de modelos de aprendizaje automático utilizando Scikit-learn. Construiremos un pipeline completo que incluye la preparación de datos, el ajuste del modelo, validación cruzada, evaluación y ajuste de hiperparámetros. Este proceso nos permitirá desarrollar una solución efectiva para un problema de clasificación real.

Explicación principal

Paso 1: Definición del problema

Para este proyecto, consideraremos el problema de clasificación de flores usando el conjunto de datos iris. Nuestro objetivo es predecir la especie de flor basándonos en sus características morfológicas.

import pandas as pd
from sklearn.datasets import load_iris

# Cargar los datos
data = load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)
df['target'] = data.target

Paso 2: Preparación de datos

Dividiremos los datos en conjuntos de entrenamiento y prueba. También realizaremos el escalado de características usando StandardScaler.

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# Separar los datos
X = df.drop('target', axis=1)
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Escalar las características
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

Paso 3: Entrenamiento del modelo

Utilizaremos un clasificador RandomForestClassifier y ajustaremos el modelo con los datos de entrenamiento. Evaluaremos su rendimiento utilizando validación cruzada.

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score

# Crear y entrenar el modelo
model = RandomForestClassifier(random_state=42)
scores = cross_val_score(model, X_train_scaled, y_train, cv=5)

print(f"Puntuación media del clasificador: {scores.mean():.2f}")

Paso 4: Ajuste de hiperparámetros

A continuación, ajustaremos los hiperparámetros del modelo utilizando GridSearchCV para mejorar su rendimiento.

from sklearn.model_selection import GridSearchCV

# Definir parámetros a ajustar
param_grid = {
    'n_estimators': [10, 50, 100],
    'max_depth': [None, 10, 20, 30]
}

grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(X_train_scaled, y_train)

print(f"Mejores hiperparámetros: {grid_search.best_params_}")

Paso 5: Evaluación final

Finalmente, evaluaremos el modelo ajustado en el conjunto de prueba.

best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_test_scaled)

from sklearn.metrics import accuracy_score, classification_report

print(f"Puntuación de precisión del modelo: {accuracy_score(y_test, y_pred):.2f}")
print(classification_report(y_test, y_pred))

Errores típicos / trampas

  1. Data leakage: Se debe asegurar que el preprocesamiento se haga solo en los datos de entrenamiento para evitar filtrar información del conjunto de prueba.
  2. Mal uso de validación cruzada: Es común cometer el error de no utilizar validación cruzada adecuadamente, lo cual puede dar resultados sesgados o suboptimos. La validación cruzada debe aplicarse a ambos conjuntos de entrenamiento y test en un pipeline.
  3. Sobreajuste en la validación cruzada: Es posible que se sobreajusten los hiperparámetros en el conjunto de validación, lo cual puede llevar a una mala generalización del modelo.

Checklist accionable

  1. Preprocesa los datos: Asegúrate de tener tus datos correctamente preparados y escalados.
  2. Divide los datos en conjuntos de entrenamiento y prueba: Usa la función train_test_split para asegurarte de que tu conjunto de test sea independiente del entrenamiento.
  3. Elije un modelo adecuado: Selecciona el tipo de modelo correcto según el problema (clasificación, regresión, etc.).
  4. Ajusta los hiperparámetros: Utiliza técnicas como GridSearchCV o RandomizedSearchCV para encontrar los mejores parámetros.
  5. Valida cruzada y ajuste de hiperparámetros en conjunto: Combina validación cruzada con la búsqueda de hiperparámetros en un solo pipeline.
  6. Evalúa el modelo final: Asegúrate de evaluar el rendimiento del modelo final en los datos de test.

Cierre

Siguientes pasos

  • Aplica lo aprendido a otros conjuntos de datos: Prueba tu conocimiento con diferentes tipos de datos y problemas.
  • Aprende más sobre validación cruzada y hiperparámetros: Estudia cómo trabajar con validación cruzada en profundidad y cómo seleccionar los mejores hiperparámetros para tus modelos.
  • Explora modelos más avanzados: Avanza a modelos más complejos como redes neuronales o gradient boosting.

¡Felicitaciones por completar este proyecto guiado! Ahora estás listo para abordar problemas de clasificación reales y aplicar tu conocimiento en soluciones prácticas.

Contacto

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