Validación cruzada con barajado

Como recordarás, la validación cruzada es el proceso de dividir tus datos en conjuntos de entrenamiento y de prueba varias veces. Cada vez que lo hagas, elige un conjunto diferente de entrenamiento y prueba. En este ejercicio, realizarás una validación cruzada tradicional ShuffleSplit con los datos de valor de la empresa de antes. Más adelante veremos qué cambios hay que hacer para los datos de series temporales. Los datos que utilizaremos son los mismos datos históricos de precios de varias grandes empresas.

Dispones de una instancia del objeto Regresión lineal (model) en tu espacio de trabajo junto con la función r2_score() para la puntuación. Además, los datos se almacenan en las matrices X y y. También hemos proporcionado una función de ayuda (visualize_predictions()) para visualizar los resultados.

Este ejercicio forma parte del curso

Machine learning para datos de series temporales en Python

Ver curso

Instrucciones de ejercicio

  • Inicializa un objeto de validación cruzada ShuffleSplit con 10 splits.
  • Recorre las divisiones de CV utilizando este objeto. En cada iteración:
    • Ajusta un modelo utilizando los índices de entrenamiento.
    • Genera predicciones utilizando los índices de prueba, puntúa el modelo (\(R^2\)) utilizando las predicciones, y recoge los resultados.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

# Import ShuffleSplit and create the cross-validation object
from sklearn.model_selection import ShuffleSplit
cv = ____(____, random_state=1)

# Iterate through CV splits
results = []
for tr, tt in cv.____(X, y):
    # Fit the model on training data
    ____(X[tr], y[tr])
    
    # Generate predictions on the test data, score the predictions, and collect
    prediction = ____(X[tt])
    score = r2_score(____, ____)
    results.append((prediction, score, tt))

# Custom function to quickly visualize predictions
visualize_predictions(results)