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
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 Funktionpredict
, 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!