Zeichnen von Validierungskurven

Machine LearningMachine LearningBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Beim maschinellen Lernen werden Validierungskurven verwendet, um die Trainings- und Validierungsergebnisse eines Klassifikators für verschiedene Hyperparameterwerte zu bestimmen. Dies kann helfen, die besten Hyperparameter für ein Modell auszuwählen. In diesem Lab verwenden wir scikit-learn, um Validierungskurven für einen Support Vector Machine (SVM)-Klassifikator zu zeichnen.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) 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{{"Zeichnen von Validierungskurven"}} sklearn/model_selection -.-> lab-49326{{"Zeichnen von Validierungskurven"}} sklearn/datasets -.-> lab-49326{{"Zeichnen von Validierungskurven"}} ml/sklearn -.-> lab-49326{{"Zeichnen von Validierungskurven"}} end

Laden des Datensatzes

Wir beginnen, indem wir den Digits-Datensatz aus scikit-learn laden und einen Teilsatz der Daten für die binäre Klassifizierung der Ziffern 1 und 2 auswählen.

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]

Definieren des Hyperparameterbereichs

Wir werden einen Bereich von Werten für den SVM-Kernparametern gamma definieren, den wir testen möchten.

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

Berechnen der Validierungsergebnisse

Wir werden die validation_curve-Funktion aus scikit-learn verwenden, um die Trainings- und Validierungsergebnisse für den SVM-Klassifikator mit verschiedenen Werten von gamma zu berechnen.

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

Zeichnen der Validierungskurven

Wir werden matplotlib verwenden, um die Trainings- und Validierungsergebnisse als Funktion von gamma zu zeichnen.

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

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mit scikit-learn Validierungskurven für einen Support-Vector-Machine-Klassifikator zeichnet. Wir haben einen Datensatz geladen, einen Bereich von Hyperparameterwerten definiert, die Validierungsergebnisse berechnet und die Ergebnisse geplottet. Dies kann helfen, die besten Hyperparameter für ein Modell auszuwählen und dessen Leistung zu verbessern.