Maison  >  Article  >  développement back-end  >  Exemple d'algorithme de machine vectorielle de support en Python

Exemple d'algorithme de machine vectorielle de support en Python

王林
王林original
2023-06-10 16:42:141402parcourir

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

3. Dessinez la limite de décision

Nous voulons connaître les performances du modèle, afin de pouvoir tracer la limite de décision du classificateur :

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 fonction predict 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Tri rapide avec PythonArticle suivant:Tri rapide avec Python