SVM-Klassifizierer auf dem Iris-Datensatz

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

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/inspection("Inspection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/inspection -.-> lab-49170{{"SVM-Klassifizierer auf dem Iris-Datensatz"}} ml/sklearn -.-> lab-49170{{"SVM-Klassifizierer auf dem Iris-Datensatz"}} end

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.