Nichtlineare SVM-Klassifikation

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

In diesem Lab werden Sie durch den Prozess der binären Klassifizierung mithilfe einer nichtlinearen Support Vector Machine (SVM) mit Radial Basis Function (RBF)-Kernel geführt. Das vorherzusagende Ziel ist ein XOR der Eingaben. Die Farbkarte veranschaulicht die Entscheidungsfunktion, die von der SVM gelernt wurde. Wir werden für diese Aufgabe die Python-Bibliothek scikit-learn verwenden.

Tipps für die virtuelle Maschine (VM)

Nachdem die VM gestartet wurde, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und auf das Jupyter Notebook für die Übung zuzugreifen.

Manchmal müssen Sie möglicherweise einige Sekunden warten, bis das Jupyter Notebook vollständig geladen ist. Aufgrund von Einschränkungen des Jupyter Notebooks kann die Validierung von Vorgängen nicht automatisiert werden.

Wenn Sie während des Lernens Probleme haben, können Sie sich gerne an Labby wenden. Geben Sie nach der Sitzung Feedback ab, und wir werden das Problem umgehend für Sie lösen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49309{{"Nichtlineare SVM-Klassifikation"}} end

Importieren der erforderlichen Bibliotheken

In diesem Schritt werden wir die für diese Aufgabe erforderlichen Bibliotheken importieren. Wir werden numpy und matplotlib für die Datenvisualisierung und scikit-learn für die SVM-Klassifizierung verwenden.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm

Daten generieren

In diesem Schritt werden wir die Daten für das Training und die Prüfung des SVM-Klassifikators generieren. Wir werden 300 zufällige Datenpunkte mit zwei Merkmalen generieren. Das vorherzusagende Ziel ist ein XOR der Eingaben.

np.random.seed(0)
X = np.random.randn(300, 2)
Y = np.logical_xor(X[:, 0] > 0, X[:, 1] > 0)

Das Modell trainieren

In diesem Schritt werden wir den SVM-Klassifikator mit RBF-Kernel (Radial Basis Function - Kernel) anhand der generierten Daten trainieren.

clf = svm.NuSVC(gamma="auto")
clf.fit(X, Y)

Visualisierung der Entscheidungsfunktion

In diesem Schritt werden wir die Entscheidungsfunktion visualisieren, die von der Support Vector Machine (SVM) gelernt wurde. Wir erstellen ein Raster von Punkten und verwenden den SVM-Klassifikator, um die Klasse jedes Punktes vorherzusagen. Anschließend zeichnen wir die Punkte mit ihren jeweiligen Klassen sowie die Entscheidungsgrenze, die von der SVM gelernt wurde.

xx, yy = np.meshgrid(np.linspace(-3, 3, 500), np.linspace(-3, 3, 500))
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.imshow(
    Z,
    interpolation="nearest",
    extent=(xx.min(), xx.max(), yy.min(), yy.max()),
    aspect="auto",
    origin="lower",
    cmap=plt.cm.PuOr_r,
)
contours = plt.contour(xx, yy, Z, levels=[0], linewidths=2, linestyles="dashed")
plt.scatter(X[:, 0], X[:, 1], s=30, c=Y, cmap=plt.cm.Paired, edgecolors="k")
plt.xticks(())
plt.yticks(())
plt.axis([-3, 3, -3, 3])
plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man binäre Klassifizierung mit einer nichtlinearen Support Vector Machine (SVM) mit RBF-Kernel (Radial Basis Function - Kernel) durchführt. Wir haben Daten mit zwei Merkmalen und einem XOR-Zielwert zum Vorhersagen generiert. Anschließend haben wir den SVM-Klassifikator mit den generierten Daten trainiert und die Entscheidungsfunktion, die von der SVM gelernt wurde, visualisiert.