SVM-Klassifizierer auf dem Iris-Datensatz

Beginner

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

Einführung

Der Iris-Datensatz ist ein klassischer Datensatz, der für Klassifizierungsprobleme verwendet wird. In diesem Lab werden wir lernen, wie man verschiedene SVM-Klassifizierer im Iris-Datensatz mit Python scikit-learn darstellt. Wir werden verschiedene lineare SVM-Klassifizierer auf einer 2D-Projektion des Iris-Datensatzes vergleichen.

VM-Tipps

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der linken oberen 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 der Einschränkungen von 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.

Importieren der erforderlichen Bibliotheken und Laden des Datensatzes

import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.inspection import DecisionBoundaryDisplay

## import some data to play with
iris = datasets.load_iris()
## Take the first two features. We could avoid this by using a two-dim dataset
X = iris.data[:, :2]
y = iris.target

Erstellen von SVM-Klassifizierern und Anpassen der Daten

C = 1.0  ## SVM-Regularisierungsparameter
models = (
    svm.SVC(kernel="linear", C=C),
    svm.LinearSVC(C=C, max_iter=10000, dual="auto"),
    svm.SVC(kernel="rbf", gamma=0.7, C=C),
    svm.SVC(kernel="poly", degree=3, gamma="auto", C=C),
)
models = (clf.fit(X, y) for clf in models)

Zeichnen der Entscheidungsfläche für die Klassifizierer

## Set-up 2x2-Gitter für das Zeichnen.
fig, sub = plt.subplots(2, 2)
plt.subplots_adjust(wspace=0.4, hspace=0.4)

X0, X1 = X[:, 0], X[:, 1]

## erstelle eine DecisionBoundaryDisplay für jeden Klassifizierer
for clf, title, ax in zip(models, titles, sub.flatten()):
    disp = DecisionBoundaryDisplay.from_estimator(
        clf,
        X,
        response_method="predict",
        cmap=plt.cm.coolwarm,
        alpha=0.8,
        ax=ax,
        xlabel=iris.feature_names[0],
        ylabel=iris.feature_names[1],
    )
    ## zeichne die Datenpunkte
    ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors="k")
    ax.set_xticks(())
    ax.set_yticks(())
    ax.set_title(title)

plt.show()

Interpretieren der Ergebnisse

Der obige Code wird einen Plot mit vier Teilplots erzeugen. Jeder Teilplot zeigt die Entscheidungsfläche für einen anderen SVM-Klassifizierer. Der Titel jedes Teilplots gibt den Typ des in diesem Klassifizierer verwendeten SVM-Kernels an. Die Datenpunkte sind farblich kodiert, basierend auf ihrer Zielklasse.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man verschiedene SVM-Klassifizierer im Iris-Datensatz mit Python scikit-learn zeichnet. Wir haben verschiedene lineare SVM-Klassifizierer auf einer 2D-Projektion des Iris-Datensatzes verglichen und die Ergebnisse interpretiert. SVM-Klassifizierer sind leistungsstarke Werkzeuge für Klassifizierungsprobleme und können für eine Vielzahl von Datensätzen verwendet werden.