Tracer des prédictions avec la validation croisée

Machine LearningMachine LearningBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à utiliser la validation croisée pour visualiser les prédictions et les erreurs du modèle à l'aide des fonctions cross_val_predict et PredictionErrorDisplay de scikit-learn. Nous allons charger l'ensemble de données sur le diabète, créer une instance d'un modèle de régression linéaire et utiliser la validation croisée pour obtenir un tableau de prédictions. Nous utiliserons ensuite PredictionErrorDisplay pour tracer les valeurs réelles en fonction des valeurs prédites, ainsi que les résidus en fonction des valeurs prédites.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour passer à l'onglet Carnet de notes pour accéder à Jupyter Notebook pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.


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{{"Tracer des prédictions avec la validation croisée"}} sklearn/model_selection -.-> lab-49101{{"Tracer des prédictions avec la validation croisée"}} sklearn/metrics -.-> lab-49101{{"Tracer des prédictions avec la validation croisée"}} sklearn/datasets -.-> lab-49101{{"Tracer des prédictions avec la validation croisée"}} ml/sklearn -.-> lab-49101{{"Tracer des prédictions avec la validation croisée"}} end

Charger et préparer les données

Tout d'abord, nous allons charger l'ensemble de données sur le diabète et le préparer pour la modélisation. Nous utiliserons la fonction load_diabetes de scikit-learn pour charger l'ensemble de données dans deux tableaux, X et y.

from sklearn.datasets import load_diabetes

X, y = load_diabetes(return_X_y=True)

Créer un modèle de régression linéaire

Ensuite, nous allons créer une instance d'un modèle de régression linéaire à l'aide de la classe LinearRegression de scikit-learn.

from sklearn.linear_model import LinearRegression

lr = LinearRegression()

Générer des prédictions validées croisées

Nous allons utiliser la fonction cross_val_predict de scikit-learn pour générer des prédictions validées croisées.

from sklearn.model_selection import cross_val_predict

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

Visualiser les erreurs de prédiction

Nous allons utiliser PredictionErrorDisplay de scikit-learn pour visualiser les erreurs de prédiction. Nous allons tracer les valeurs réelles en fonction des valeurs prédites, ainsi que les résidus en fonction des valeurs prédites.

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()

Interpréter les résultats

À partir des visualisations, on peut voir que le graphique des valeurs réelles en fonction des valeurs prédites montre une relation relativement linéaire avec quelques variations. Le graphique des résidus en fonction des valeurs prédites montre un motif relativement aléatoire sans tendance claire, ce qui indique que le modèle de régression linéaire peut être une bonne approximation des données. Cependant, il est important de noter que nous avons utilisé cross_val_predict uniquement à des fins de visualisation. Il serait problématique d'évaluer quantitativement les performances du modèle en calculant une seule métrique de performance à partir des prédictions concaténées renvoyées par cross_val_predict lorsque les différents plis de validation croisée diffèrent par taille et distributions. Il est recommandé de calculer les métriques de performance par plis à l'aide de cross_val_score ou cross_validate à la place.

Sommaire

Dans ce laboratoire, nous avons appris à utiliser la validation croisée pour visualiser les prédictions et les erreurs du modèle à l'aide des fonctions cross_val_predict et PredictionErrorDisplay de scikit-learn. Nous avons chargé l'ensemble de données sur le diabète, créé une instance d'un modèle de régression linéaire et utilisé la validation croisée pour obtenir un tableau de prédictions. Nous avons ensuite utilisé PredictionErrorDisplay pour tracer les valeurs réelles en fonction des valeurs prédites, ainsi que les résidus en fonction des valeurs prédites. Enfin, nous avons interprété les résultats et discuté de l'importance d'utiliser les métriques de performance par plis pour l'évaluation du modèle.