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
- 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.
- 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.
- 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
- Preprocesa los datos: Asegúrate de tener tus datos correctamente preparados y escalados.
- Divide los datos en conjuntos de entrenamiento y prueba: Usa la función
train_test_splitpara asegurarte de que tu conjunto de test sea independiente del entrenamiento. - Elije un modelo adecuado: Selecciona el tipo de modelo correcto según el problema (clasificación, regresión, etc.).
- Ajusta los hiperparámetros: Utiliza técnicas como
GridSearchCVoRandomizedSearchCVpara encontrar los mejores parámetros. - Valida cruzada y ajuste de hiperparámetros en conjunto: Combina validación cruzada con la búsqueda de hiperparámetros en un solo pipeline.
- 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.