Graficando predicciones con validación cruzada

Machine LearningMachine LearningBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderemos a usar la validación cruzada para visualizar las predicciones y errores del modelo utilizando las funciones cross_val_predict y PredictionErrorDisplay de scikit-learn. Cargaremos el conjunto de datos de diabetes, crearemos una instancia de un modelo de regresión lineal y usaremos la validación cruzada para obtener una matriz de predicciones. Luego usaremos PredictionErrorDisplay para trazar los valores reales versus los valores predichos, así como los residuos versus los valores predichos.

Consejos sobre la VM

Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/linear_model("Linear Models") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/metrics("Metrics") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/linear_model -.-> lab-49101{{"Graficando predicciones con validación cruzada"}} sklearn/model_selection -.-> lab-49101{{"Graficando predicciones con validación cruzada"}} sklearn/metrics -.-> lab-49101{{"Graficando predicciones con validación cruzada"}} sklearn/datasets -.-> lab-49101{{"Graficando predicciones con validación cruzada"}} ml/sklearn -.-> lab-49101{{"Graficando predicciones con validación cruzada"}} end

Cargar y preparar los datos

Primero, cargaremos el conjunto de datos de diabetes y lo prepararemos para el modelado. Usaremos la función load_diabetes de scikit-learn para cargar el conjunto de datos en dos matrices, X e y.

from sklearn.datasets import load_diabetes

X, y = load_diabetes(return_X_y=True)

Crear un modelo de regresión lineal

A continuación, crearemos una instancia de un modelo de regresión lineal utilizando la clase LinearRegression de scikit-learn.

from sklearn.linear_model import LinearRegression

lr = LinearRegression()

Generar predicciones validadas cruzadamente

Usaremos la función cross_val_predict de scikit-learn para generar predicciones validadas cruzadamente.

from sklearn.model_selection import cross_val_predict

y_pred = cross_val_predict(lr, X, y, cv=10)

Visualizar errores de predicción

Usaremos PredictionErrorDisplay de scikit-learn para visualizar los errores de predicción. Trazaremos los valores reales versus los valores predichos, así como los residuos versus los valores predichos.

import matplotlib.pyplot as plt
from sklearn.metrics import PredictionErrorDisplay

fig, axs = plt.subplots(ncols=2, figsize=(8, 4))
PredictionErrorDisplay.from_predictions(
    y,
    y_pred=y_pred,
    kind="actual_vs_predicted",
    subsample=100,
    ax=axs[0],
    random_state=0,
)
axs[0].set_title("Actual vs. Predicted values")
PredictionErrorDisplay.from_predictions(
    y,
    y_pred=y_pred,
    kind="residual_vs_predicted",
    subsample=100,
    ax=axs[1],
    random_state=0,
)
axs[1].set_title("Residuals vs. Predicted Values")
fig.suptitle("Plotting cross-validated predictions")
plt.tight_layout()
plt.show()

Interpretar los resultados

A partir de las visualizaciones, podemos ver que la gráfica de valores reales versus predichos muestra una relación relativamente lineal con algunas variaciones. La gráfica de residuos versus valores predichos muestra un patrón relativamente aleatorio sin tendencia clara, lo que indica que el modelo de regresión lineal puede ajustarse bien a los datos. Sin embargo, es importante destacar que usamos cross_val_predict solo con fines de visualización. Sería problemático evaluar cuantitativamente el rendimiento del modelo calculando una sola métrica de rendimiento a partir de las predicciones concatenadas devueltas por cross_val_predict cuando los diferentes pliegues de validación cruzada varían en tamaño y distribuciones. Se recomienda calcular las métricas de rendimiento por pliegue usando cross_val_score o cross_validate en lugar de eso.

Resumen

En este laboratorio, aprendimos cómo usar la validación cruzada para visualizar las predicciones y errores del modelo utilizando las funciones cross_val_predict y PredictionErrorDisplay de scikit-learn. Cargamos el conjunto de datos de diabetes, creamos una instancia de un modelo de regresión lineal y usamos la validación cruzada para obtener una matriz de predicciones. Luego usamos PredictionErrorDisplay para trazar los valores reales versus los valores predichos, así como los residuos versus los valores predichos. Finalmente, interpretamos los resultados y discutimos la importancia de usar las métricas de rendimiento por pliegue para la evaluación del modelo.