Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für einen Support-Vector-Machine-Algorithmus in Python

Beispiel für einen Support-Vector-Machine-Algorithmus in Python

王林
王林Original
2023-06-10 16:42:141336Durchsuche

Support Vector Machines, der vollständige englische Name lautet Support Vecto Machines, kurz SVM. Es ist ein sehr hervorragendes Klassifizierungsmodell, insbesondere für die Erkennung kleiner Stichproben, nichtlinearer und hochdimensionaler Muster. SVM wurde 1992 vom Vapnik-Team vorgeschlagen. Es wurde zunächst zur Lösung von Problemen mit zwei Klassifizierungen verwendet und entwickelte sich später schrittweise zu einem Algorithmus, der Probleme mit mehreren Klassifizierungen bewältigen kann.

Python ist eine prägnante und leistungsstarke Programmiersprache, die zahlreiche Algorithmenpakete für maschinelles Lernen implementiert, einschließlich SVM. In diesem Artikel werden die Schritte zur Implementierung des Support Vector Machine-Algorithmus über Python vorgestellt.

1. Daten vorbereiten

Lassen Sie uns einen einfachen Satz Trainingsdaten erstellen. Erstellen Sie einen Beispieldatensatz, in dem x1 die Größe, x2 das Gewicht und y die Klassenbezeichnung (0 oder 1) darstellt.

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(7)
X_train = np.array([[167, 75], [182, 80], [176, 85], [156, 50], [173, 70], [183, 90], [178, 75], [156, 45],
                    [162, 55], [163, 50], [159, 45], [180, 85]])
y_train = np.array([0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1])
plt.scatter(X_train[y_train == 0][:, 0], X_train[y_train == 0][:, 1], c='r', s=40, label='Male')
plt.scatter(X_train[y_train == 1][:, 0], X_train[y_train == 1][:, 1], c='b', s=40, label='Female')
plt.legend()
plt.xlabel('Height')
plt.ylabel('Weight')
plt.show()

In diesem Datensatz klassifizieren wir Menschen als männlich oder weiblich.

2. Wählen Sie einen Klassifikator aus

Als nächstes müssen wir einen für dieses Problem geeigneten Klassifikator auswählen, nämlich SVM. Es gibt viele Varianten von SVM, aber hier verwenden wir lineare SVM.

Lassen Sie uns ein SVM-Modell erstellen:

from sklearn.svm import SVC

svm = SVC(kernel='linear')
svm.fit(X_train, y_train)

Hier verwenden wir die Klasse SVC und geben den Parameter kernel als linear an, was angibt, dass wir verwenden ein linearer Kernel. SVC类,指定kernel参数为linear,表明我们使用线性核。

三、绘制决策边界

我们想要知道模型的性能如何,因此我们可以在绘制出分类器的决策边界:

def plot_decision_boundary(model, ax=None):
    if ax is None:
        ax = plt.gca()
    x_min, x_max = ax.get_xlim()
    y_min, y_max = ax.get_ylim()
    xx, yy = np.meshgrid(np.linspace(x_min, x_max, 100),
                         np.linspace(y_min, y_max, 100))
    Z = model.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
    ax.contourf(xx, yy, Z, alpha=0.2)
    ax.contour(xx, yy, Z, colors='black', linewidths=0.5)
    ax.set_xlim([x_min, x_max])
    ax.set_ylim([y_min, y_max])
    
plt.scatter(X_train[y_train == 0][:, 0], X_train[y_train == 0][:, 1], c='r', s=40, label='Male')
plt.scatter(X_train[y_train == 1][:, 0], X_train[y_train == 1][:, 1], c='b', s=40, label='Female')
plot_decision_boundary(svm)
plt.legend()
plt.xlabel('Height')
plt.ylabel('Weight')
plt.show()

运行结束后,可以看到绘制出了分类器的决策边界。

四、预测新数据

我们可以用训练好的模型对新的数据进行预测。

X_test = np.array([[166, 70], [185, 90], [170, 75]])
y_test = svm.predict(X_test)
print(y_test)

在这里,我们使用predict

3. Zeichnen Sie die Entscheidungsgrenze

Wir möchten die Leistung des Modells kennen, damit wir die Entscheidungsgrenze des Klassifikators zeichnen können:

rrreee

Nach dem Ausführen können Sie sehen, dass die Entscheidungsgrenze des Klassifikators gezeichnet ist. 🎜🎜4. Neue Daten vorhersagen🎜🎜Wir können das trainierte Modell verwenden, um neue Daten vorherzusagen. 🎜rrreee🎜Hier verwenden wir die Funktion predict, um drei neue Datenproben vorherzusagen. Es wird ihre Kategorie zurückgegeben. 🎜🎜Fazit🎜🎜In diesem Artikel haben wir die Verwendung des Support Vector Machine-Algorithmus in Python vorgestellt. Wir haben einen Klassifikator erstellt, indem wir einen einfachen Trainingsdatensatz erstellt und lineare SVM verwendet haben. Wir haben auch die Entscheidungsgrenzen des Klassifikators aufgezeichnet und das Modell verwendet, um neue Datenproben vorherzusagen. SVM ist auch bei vielen Gelegenheiten ein sehr beliebter Algorithmus und kann in vielen Bereichen eine gute Leistung erzielen. Wenn Sie bei der Datenverarbeitung mehr Algorithmen für maschinelles Lernen beherrschen möchten, lohnt es sich auch, SVM zu erlernen. 🎜

Das obige ist der detaillierte Inhalt vonBeispiel für einen Support-Vector-Machine-Algorithmus in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Schnelle Sortierung mit PythonNächster Artikel:Schnelle Sortierung mit Python