Maison > Article > développement back-end > Exemple d'algorithme de machine vectorielle de support en Python
Support Vector Machines, le nom anglais complet est Support Vecto Machines, ou SVM en abrégé. Il s'agit d'un très excellent modèle de classification, en particulier dans la reconnaissance de formes de petits échantillons, non linéaires et de grande dimension. SVM a été proposé par l'équipe Vapnik en 1992. Il a été initialement utilisé pour résoudre des problèmes de classification binaire, puis s'est progressivement développé en un algorithme capable de gérer des problèmes de multi-classification.
Python est un langage de programmation concis et puissant qui implémente de nombreux packages d'algorithmes d'apprentissage automatique, dont SVM. Cet article présentera les étapes de mise en œuvre de l'algorithme de machine à vecteurs de support via Python.
1. Préparer les données
Construisons un ensemble simple de données d'entraînement. Créez un exemple d'ensemble de données où x1 représente la taille, x2 représente le poids et y est l'étiquette de classe (0 ou 1).
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()
Dans cet ensemble de données, nous classons les personnes comme étant des hommes ou des femmes.
2. Sélectionnez un classificateur
Ensuite, nous devons choisir un classificateur adapté à ce problème, à savoir SVM. Il existe de nombreuses variantes de SVM, mais ici, nous utilisons un SVM linéaire.
Construisons un modèle SVM :
from sklearn.svm import SVC svm = SVC(kernel='linear') svm.fit(X_train, y_train)
Ici, nous utilisons la classe SVC
et spécifions le paramètre kernel
comme linéaire
, indiquant que nous utilisons un noyau linéaire. 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
Après l'exécution, vous pouvez voir que la limite de décision du classificateur est dessinée. 🎜🎜4. Prédire de nouvelles données🎜🎜Nous pouvons utiliser le modèle entraîné pour prédire de nouvelles données. 🎜rrreee🎜Ici, nous utilisons la fonctionpredict
pour prédire trois nouveaux échantillons de données. Il renverra leurs catégories. 🎜🎜Conclusion🎜🎜Dans cet article, nous avons présenté comment utiliser l'algorithme Support Vector Machine en Python. Nous avons construit un classificateur en créant un ensemble de données de formation simple et en utilisant SVM linéaire. Nous avons également tracé les limites de décision du classificateur et utilisé le modèle pour prédire de nouveaux échantillons de données. SVM est également un algorithme très populaire à de nombreuses reprises et peut atteindre de bonnes performances dans de nombreux domaines. Si vous souhaitez maîtriser davantage d'algorithmes d'apprentissage automatique lors du traitement des données, SVM vaut également la peine d'être appris. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!