Regresión Lineal y Soporte Vectorial: Manejo de Datos Atípicos
Clase 19 de 37 • Curso Profesional de Machine Learning con scikit-learn
Resumen
¿Cómo implementar un regresor robusto frente a datos corruptos?
¡Bienvenido al fascinante mundo del machine learning aplicado! Aquí vamos a adentrarnos en la implementación de un regresor robusto que nos ayudará a lidiar con datos corruptos, una situación común en escenarios del mundo real. Vamos a trabajar con el conjunto de datos CD la felicidad, modificándolo ligeramente para introducir valores atípicos al final de nuestro dataset. Esta táctica nos permitirá comprobar la eficacia y robustez de nuestros modelos al enfrentarse con datos corrompidos.
¿Cómo estructuramos nuestro script y cargamos los datos?
Para empezar, es crucial comprender cómo estructuramos nuestro script y preparamos nuestros datos. Utilizaremos pandas para la manipulación de datos y Sklearn para la implementación del modelo. Aquí te mostramos cómo comenzamos configurando el entorno de trabajo y cargando los datos:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# Cargar los datos del archivo CSV
data = pd.read_csv('./data/felicidad_corrupta.csv')
print(data.head())
Este snippet de código nos permite verificar que los datos se han cargado correctamente, mostrando los primeros cinco registros del dataset.
¿Cómo preparamos nuestros datos para modelar?
En esta fase, el objetivo es identificar las características que serán nuestros predictores y nuestra variable objetivo. Aquí descartamos las columnas que no aportan información relevante de predicción, como el nombre del país:
# Eliminamos columnas no relevantes
features = data.drop(['país', 'score'], axis=1)
target = data['score']
# Dividimos los datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.3, random_state=42)
Es fundamental recordar configurar el random_state
para asegurar la replicabilidad de los resultados.
¿Cómo configuramos y evaluamos múltiples modelos eficazmente?
Una parte interesante de este proyecto es cómo configuramos múltiples modelos de manera eficiente utilizando un diccionario en Python. Esto nos permite entrenar y evaluar varios modelos de manera simplificada.
from sklearn.svm import SVR
from sklearn.linear_model import RANSACRegressor, HuberRegressor
# Diccionario de estimadores
estimadores = {
'SVR': SVR(gamma='auto', C=1.0, epsilon=0.1),
'RANSAC': RANSACRegressor(),
'Huber': HuberRegressor(epsilon=1.35)
}
# Entrenar y evaluar modelos
for nombre, modelo in estimadores.items():
modelo.fit(X_train, y_train)
predicciones = modelo.predict(X_test)
error = mean_squared_error(y_test, predicciones)
print(f'{nombre} error cuadrático medio: {error}')
Este procedimiento no solo ahorra tiempo, sino que también facilita la comparación de resultados para elegir el modelo más adecuado.
¿Qué recomendaciones debemos seguir para mejorar nuestro modelo?
-
Análisis de datos atípicos: Evaluar el impacto de los outliers en tu dataset. Ajustar los parámetros
epsilon
del HuberRegressor para manipular cómo se manejan estos valores. -
Ajuste de hiperparámetros: Realiza una búsqueda de hiperparámetros para el modelo SVR y otros modelos susceptibles a configuraciones específicas para optimizar su rendimiento.
-
Validación cruzada: Implementa técnicas de validación cruzada para asegurar que tu modelo tiene un rendimiento consistente a través de diferentes particiones del dataset.
Este enfoque ofrece una metodología práctica y efectiva para manejar datos corruptos y asegurar que nuestros modelos sean robustos y confiables. ¡Sigue explorando y aprendiendo para afinar tus habilidades en el machine learning!