Plotando Curvas de Validação

Beginner

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

Introdução

No aprendizado de máquina, as curvas de validação são usadas para determinar as pontuações de treinamento e validação de um classificador para diferentes valores de hiperparâmetros. Isso pode ajudar na seleção dos melhores hiperparâmetros para um modelo. Neste laboratório, usaremos o scikit-learn para plotar curvas de validação para um classificador de máquina de vetores de suporte (SVM).

Dicas da Máquina Virtual

Após o término da inicialização da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos prontamente o problema para você.

Carregando o Conjunto de Dados

Começaremos carregando o conjunto de dados de dígitos do scikit-learn e selecionando um subconjunto dos dados para classificação binária dos dígitos 1 e 2.

from sklearn.datasets import load_digits

X, y = load_digits(return_X_y=True)
subset_mask = np.isin(y, [1, 2])  ## classificação binária: 1 vs 2
X, y = X[subset_mask], y[subset_mask]

Definindo o Intervalo de Hiperparâmetros

Vamos definir um intervalo de valores para o parâmetro do kernel SVM gama que desejamos testar.

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

Calculando as Pontuações de Validação

Usaremos a função validation_curve do scikit-learn para calcular as pontuações de treinamento e validação para o classificador SVM com diferentes valores de gama.

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

Plotando as Curvas de Validação

Usaremos o matplotlib para plotar as pontuações de treinamento e validação em função de gama.

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("Curva de Validação com SVM")
plt.xlabel(r"$\gamma$")
plt.ylabel("Pontuação")
plt.ylim(0.0, 1.1)
lw = 2
plt.semilogx(
    param_range, train_scores_mean, label="Pontuação de Treinamento", 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="Pontuação de Validação Cruzada", 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()

Resumo

Neste laboratório, aprendemos como utilizar o scikit-learn para plotar curvas de validação para um classificador de máquina de vetores de suporte. Carregamos um conjunto de dados, definimos um intervalo de valores de hiperparâmetros, calculamos as pontuações de validação e plotamos os resultados. Isso pode ajudar na seleção dos melhores hiperparâmetros para um modelo e na melhoria do seu desempenho.