Validación cruzada

Aprendizaje supervisado con scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Motivación de la validación cruzada

  • El rendimiento del modelo depende de la forma en que dividamos los datos

  • No es representativo de la capacidad del modelo para generalizar a datos no vistos

  • Solución: ¡la validación cruzada!

Aprendizaje supervisado con scikit-learn

Fundamentos de la validación cruzada

Títulos de las tablas: división 1, pliegue 1, pliegue 2, pliegue 3, pliegue 4 y pliegue 5

Aprendizaje supervisado con scikit-learn

Fundamentos de la validación cruzada

La división 1 se reserva como conjunto de pruebas

Aprendizaje supervisado con scikit-learn

Fundamentos de la validación cruzada

Los pliegues 2a 5 se utilizan como datos de entrenamiento

Aprendizaje supervisado con scikit-learn

Fundamentos de la validación cruzada

Se calcula la métrica de estos pliegues

Aprendizaje supervisado con scikit-learn

Fundamentos de la validación cruzada

Pliegue 2 como datos de prueba

Aprendizaje supervisado con scikit-learn

Fundamentos de la validación cruzada

Pliegues 1, 3, 4 y 5 como datos de entrenamiento

Aprendizaje supervisado con scikit-learn

Fundamentos de la validación cruzada

calcular de nuevo la métrica

Aprendizaje supervisado con scikit-learn

Fundamentos de la validación cruzada

repetir con el tercer pliegue

Aprendizaje supervisado con scikit-learn

Fundamentos de la validación cruzada

repetir con el cuarto pliegue

Aprendizaje supervisado con scikit-learn

Fundamentos de la validación cruzada

repetir con el quinto pliegue

Aprendizaje supervisado con scikit-learn

Validación cruzada y rendimiento del modelo

  • 5 pliegues = 5 veces CV

  • 10 pliegues = 10 veces CV

  • k pliegues = k veces CV

  • Más pliegues = Más caro computacionalmente

Aprendizaje supervisado con scikit-learn

Validación cruzada en scikit-learn

from sklearn.model_selection import cross_val_score, KFold

kf = KFold(n_splits=6, shuffle=True, random_state=42)
reg = LinearRegression()
cv_results = cross_val_score(reg, X, y, cv=kf)
Aprendizaje supervisado con scikit-learn

Evaluación del rendimiento de la validación cruzada

print(cv_results)
[0.70262578, 0.7659624, 0.75188205, 0.76914482, 0.72551151, 0.73608277]
print(np.mean(cv_results), np.std(cv_results))
0.7418682216666667 0.023330243960652888
print(np.quantile(cv_results, [0.025, 0.975]))
array([0.7054865, 0.76874702])
Aprendizaje supervisado con scikit-learn

¡Vamos a practicar!

Aprendizaje supervisado con scikit-learn

Preparing Video For Download...