SVM-Klassifizierung mit benutzerdefiniertem Kernel

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 wir lernen, wie man Support Vector Machines (SVM) verwendet, um eine Probe mit einem benutzerdefinierten Kernel zu klassifizieren. Wir werden die scikit-learn-Bibliothek in Python verwenden, um die SVM-Klassifizierung mit einem benutzerdefinierten Kernel durchzuführen. SVM ist ein beliebiges Machine-Learning-Algorithmus, der zur Klassifizierung, Regression und Ausreißererkennung verwendet wird. SVM arbeitet, indem eine Grenze oder eine Linie (Hyperebene) erstellt wird, die die Daten in Klassen trennt.

VM-Tipps

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 öffnen.

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 ab, 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-49097{{"SVM-Klassifizierung mit benutzerdefiniertem Kernel"}} ml/sklearn -.-> lab-49097{{"SVM-Klassifizierung mit benutzerdefiniertem Kernel"}} end

Bibliotheken importieren

In diesem Schritt werden wir die erforderlichen Bibliotheken für dieses Lab importieren. Wir werden numpy, matplotlib, scikit-learn und DecisionBoundaryDisplay verwenden.

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

Daten laden

In diesem Schritt werden wir den Iris-Datensatz mit dem datasets-Modul von scikit-learn laden. Wir werden die ersten beiden Merkmale des Datensatzes auswählen und sie der Variable X zuweisen. Wir werden auch die Zielvariable der Variable Y zuweisen.

iris = datasets.load_iris()
X = iris.data[:, :2]
Y = iris.target

Benutzerdefinierten Kernel erstellen

In diesem Schritt werden wir einen benutzerdefinierten Kernel erstellen. Der benutzerdefinierte Kernel wird ein Skalarprodukt zweier Matrizen sein. Wir werden eine Matrix M mit den Werten [[2, 0], [0, 1.0]] erstellen. Anschließend werden wir die Matrizen X und Y mit M multiplizieren und ihr Skalarprodukt bilden.

def my_kernel(X, Y):
    """
    Wir erstellen einen benutzerdefinierten Kernel:

                 (2  0)
    k(X, Y) = X  (    ) Y.T
                 (0  1)
    """
    M = np.array([[2, 0], [0, 1.0]])
    return np.dot(np.dot(X, M), Y.T)

SVM-Klassifizierer erstellen

In diesem Schritt werden wir eine Instanz des SVM-Klassifizierers erstellen und unsere Daten anpassen. Wir werden den in dem vorherigen Schritt erstellten benutzerdefinierten Kernel verwenden.

clf = svm.SVC(kernel=my_kernel)
clf.fit(X, Y)

Entscheidungsgrenze darstellen

In diesem Schritt werden wir die Entscheidungsfläche und die Stützvektoren darstellen. Wir werden das DecisionBoundaryDisplay-Modul aus dem inspection-Modul von scikit-learn verwenden, um die Entscheidungsgrenze zu zeichnen. Wir werden auch die Trainingspunkte als Streudiagramm darstellen.

ax = plt.gca()
DecisionBoundaryDisplay.from_estimator(
    clf,
    X,
    cmap=plt.cm.Paired,
    ax=ax,
    response_method="predict",
    plot_method="pcolormesh",
    shading="auto",
)

plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired, edgecolors="k")
plt.title("3-Class classification using Support Vector Machine with custom kernel")
plt.axis("tight")
plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Support Vector Machines (SVM) verwendet, um eine Probe mit einem benutzerdefinierten Kernel zu klassifizieren. Wir haben die scikit-learn-Bibliothek verwendet, um die SVM-Klassifizierung mit einem benutzerdefinierten Kernel durchzuführen. Wir haben den Iris-Datensatz geladen, einen benutzerdefinierten Kernel erstellt, eine Instanz des SVM-Klassifizierers erstellt und unsere Daten angepasst und die Entscheidungsgrenze und die Stützvektoren geplottet. SVM ist ein populäres Machine-Learning-Algorithmus, der zur Klassifizierung, Regression und Ausreißererkennung verwendet wird.