Validación Cruzada con Scikit-learn: Cruz Vales Cor y KFold

Clase 29 de 37Curso Profesional de Machine Learning con scikit-learn

Resumen

¿Cómo implementar la validación cruzada en Python?

La validación cruzada es una técnica esencial en el análisis de datos que te permite evaluar el rendimiento de un modelo de aprendizaje automático de manera efectiva. Este proceso implica dividir los datos en subconjuntos para probar el modelo varias veces y así asegurar su robustez. Gracias a bibliotecas como Scikit-Learn, esta técnica puede ser implementada de manera sencilla y eficaz. Vamos a explorar cómo hacerlo paso a paso.

¿Cuáles módulos y funciones necesitamos?

Para llevar a cabo la validación cruzada en Python, comenzaremos importando los módulos necesarios:

import pandas as pd
import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import cross_val_score, KFold
  • Pandas: Utilizado para la manipulación de datos.
  • NumPy: Ayuda en cálculos matemáticos complejos.
  • DecisionTreeRegressor: Un modelo de árbol de decisión para regresiones.
  • cross_val_score y KFold: Funciones de Scikit-Learn que facilitan la implementación de la validación cruzada.

¿Cómo preparar los datos?

Vamos a utilizar un dataset conocido para llevar a cabo nuestra validación cruzada. Puedes cargarlo y prepararlo como se muestra a continuación:

data = pd.read_csv('data/felicidad.csv')
X = data.drop(['country', 'score'], axis=1)
y = data['score']
  • DataFrame data: Cargamos un CSV que contiene los datos.
  • Características X: Todas las columnas excepto el nombre del país y el score.
  • Objetivo y: La columna que queremos predecir, en este caso, el 'score'.

¿Cómo definir y evaluar el modelo?

En esta etapa, definimos nuestro modelo de árbol de decisión sin ajustes adicionales y procedemos a evaluarlo.

model = DecisionTreeRegressor()

scores = cross_val_score(
    model, X, y, scoring='neg_mean_squared_error', cv=3
)

mean_score = np.mean(scores)
abs_mean_score = np.abs(mean_score)
  • DecisionTreeRegressor: Se utiliza en su configuración predeterminada.
  • cross_val_score: Calcula el error cuadrático medio negativo para validar cruzadamente.
  • Media y valor absoluto: Convertimos el valor medio del score negativo a su valor absoluto para mayor claridad.

¿Cómo controlar las particiones de datos?

Usamos KFold para dividir los datos en subconjuntos específicos y controlar la aleatorización y consistencia de las particiones.

kf = KFold(n_splits=3, shuffle=True, random_state=42)

for train_index, test_index in kf.split(X):
    X_train, X_test = X.iloc[train_index], X.iloc[test_index]
    y_train, y_test = y.iloc[train_index], y.iloc[test_index]
  • KFold: Permite definir el número de particiones (3 en nuestro caso), además de la opción de aleatorización.
  • Partición y asignación: Divide los datos en conjuntos de entrenamiento y prueba.

¡Así es como puedes implementar y controlar la validación cruzada de manera sencilla en Python! Experimentar con diferentes modelos y configuraciones te dará una profunda comprensión de la robustez y eficacia de tus modelos. Sigue explorando y aprendiendo, el único límite es tu curiosidad.