Traçage des courbes de validation

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

En apprentissage automatique, les courbes de validation sont utilisées pour déterminer les scores d'entraînement et de validation d'un classifieur pour différentes valeurs d'hyperparamètres. Cela peut aider à sélectionner les meilleurs hyperparamètres pour un modèle. Dans ce laboratoire, nous allons utiliser scikit-learn pour tracer les courbes de validation pour un classifieur à vecteurs de support (SVM).

Conseils sur la machine virtuelle

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

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/svm("Support Vector Machines") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/svm -.-> lab-49326{{"Traçage des courbes de validation"}} sklearn/model_selection -.-> lab-49326{{"Traçage des courbes de validation"}} sklearn/datasets -.-> lab-49326{{"Traçage des courbes de validation"}} ml/sklearn -.-> lab-49326{{"Traçage des courbes de validation"}} end

Chargement du jeu de données

Nous allons commencer par charger le jeu de données des chiffres à partir de scikit-learn et sélectionner un sous-ensemble des données pour la classification binaire des chiffres 1 et 2.

from sklearn.datasets import load_digits

X, y = load_digits(return_X_y=True)
subset_mask = np.isin(y, [1, 2])  ## classification binaire : 1 vs 2
X, y = X[subset_mask], y[subset_mask]

Définition de la plage d'hyperparamètres

Nous allons définir une plage de valeurs pour le paramètre gamma du noyau SVM que nous souhaitons tester.

param_range = np.logspace(-6, -1, 5)

Calcul des scores de validation

Nous allons utiliser la fonction validation_curve de scikit-learn pour calculer les scores d'entraînement et de validation pour le classifieur SVM avec différentes valeurs de gamma.

from sklearn.svm import SVC
from sklearn.model_selection import validation_curve

train_scores, test_scores = validation_curve(
    SVC(),
    X,
    y,
    param_name="gamma",
    param_range=param_range,
    scoring="accuracy",
    n_jobs=2,
)

Traçage des courbes de validation

Nous allons utiliser matplotlib pour tracer les scores d'entraînement et de validation en fonction de gamma.

import matplotlib.pyplot as plt

train_scores_mean = np.mean(train_scores, axis=1)
train_scores_std = np.std(train_scores, axis=1)
test_scores_mean = np.mean(test_scores, axis=1)
test_scores_std = np.std(test_scores, axis=1)

plt.title("Validation Curve with SVM")
plt.xlabel(r"$\gamma$")
plt.ylabel("Score")
plt.ylim(0.0, 1.1)
lw = 2
plt.semilogx(
    param_range, train_scores_mean, label="Training score", color="darkorange", lw=lw
)
plt.fill_between(
    param_range,
    train_scores_mean - train_scores_std,
    train_scores_mean + train_scores_std,
    alpha=0.2,
    color="darkorange",
    lw=lw,
)
plt.semilogx(
    param_range, test_scores_mean, label="Cross-validation score", color="navy", lw=lw
)
plt.fill_between(
    param_range,
    test_scores_mean - test_scores_std,
    test_scores_mean + test_scores_std,
    alpha=0.2,
    color="navy",
    lw=lw,
)
plt.legend(loc="best")
plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser scikit-learn pour tracer des courbes de validation pour un classifieur à vecteurs de support. Nous avons chargé un jeu de données, défini une plage de valeurs d'hyperparamètres, calculé les scores de validation et tracé les résultats. Cela peut aider à sélectionner les meilleurs hyperparamètres pour un modèle et à améliorer ses performances.