Graficando curvas de validación

Beginner

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

Introducción

En el aprendizaje automático, las curvas de validación se utilizan para determinar las puntuaciones de entrenamiento y validación de un clasificador para diferentes valores de hiperparámetros. Esto puede ayudar a seleccionar los mejores hiperparámetros para un modelo. En este laboratorio, usaremos scikit-learn para trazar curvas de validación para un clasificador de máquinas de vectores de soporte (SVM).

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.

Carga del conjunto de datos

Comenzaremos cargando el conjunto de datos de dígitos de scikit-learn y seleccionando un subconjunto de los datos para la clasificación binaria de los dígitos 1 y 2.

from sklearn.datasets import load_digits

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

Definiendo el rango de hiperparámetros

Definiremos un rango de valores para el parámetro gamma del kernel de SVM que queremos probar.

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

Calculando las puntuaciones de validación

Usaremos la función validation_curve de scikit-learn para calcular las puntuaciones de entrenamiento y validación para el clasificador SVM con diferentes valores 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,
)

Graficando las curvas de validación

Usaremos matplotlib para graficar las puntuaciones de entrenamiento y validación en función 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()

Resumen

En este laboratorio, aprendimos cómo usar scikit-learn para graficar curvas de validación para un clasificador de máquina de vectores de soporte. Cargamos un conjunto de datos, definimos un rango de valores de hiperparámetros, calculamos las puntuaciones de validación y graficamos los resultados. Esto puede ayudar a seleccionar los mejores hiperparámetros para un modelo y mejorar su rendimiento.