Maison >développement back-end >Tutoriel Python >Comment écrire un algorithme SVM en Python ?

Comment écrire un algorithme SVM en Python ?

WBOY
WBOYoriginal
2023-09-21 12:06:11783parcourir

Comment écrire un algorithme SVM en Python ?

Comment écrire un algorithme SVM en Python ?

SVM (Support Vector Machine) est un algorithme de classification et de régression couramment utilisé basé sur la théorie de l'apprentissage statistique et le principe de minimisation des risques structurels. Il a une grande précision et une grande capacité de généralisation et convient à différents types de données. Dans cet article, nous présenterons en détail comment écrire l'algorithme SVM à l'aide de Python et fournirons des exemples de code spécifiques.

  1. Installer Python et les bibliothèques associées
    Avant de commencer à écrire l'algorithme SVM, vous devez d'abord vous assurer que Python et les bibliothèques d'apprentissage automatique associées ont été installées. Il est recommandé d'utiliser Anaconda comme environnement de développement intégré pour Python. Il est non seulement livré avec un interpréteur Python, mais comprend également de nombreuses bibliothèques de calcul scientifique et d'apprentissage automatique couramment utilisées. Installez la bibliothèque scikit-learn à l'aide de la commande suivante :
pip install scikit-learn
  1. Importer les bibliothèques requises
    Importez les bibliothèques requises, notamment scikit-learn, numpy et matplotlib.
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
  1. Chargement du jeu de données
    Pour démontrer l'écriture de l'algorithme SVM, nous utiliserons le fameux jeu de données Iris. L'ensemble de données Iris contient 150 échantillons de fleurs d'iris, chaque échantillon possède 4 caractéristiques. Nous avons divisé l'ensemble de données en deux catégories : Setosa et Versicolor, deux variétés de fleurs d'iris.
iris = datasets.load_iris()
X = iris.data[:, :2]  # 我们只使用前两个特征
y = iris.target
  1. Entraîner le modèle
    Utilisez SVM pour entraîner le modèle, nous utilisons ici une fonction de noyau linéaire.
C = 1.0  # SVM正则化参数
svc = svm.SVC(kernel='linear', C=C).fit(X, y)
  1. Dessinez la limite de décision
    Afin de mieux comprendre l'effet de classification du SVM, nous pouvons tracer la limite de décision. Tout d’abord, nous créons une grille pour échantillonner tout l’espace des fonctionnalités.
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
h = (x_max / x_min)/100
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))

Ensuite, nous utilisons cette grille comme caractéristiques d'entrée pour prédire et obtenir la limite de décision.

Z = svc.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

Enfin, nous utilisons la bibliothèque matplotlib pour dessiner les points d'échantillonnage et les limites de décision.

plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.xticks(())
plt.yticks(())
plt.show()
  1. Exemple de code complet
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets

# 加载数据集
iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target

# 训练模型
C = 1.0  # SVM正则化参数
svc = svm.SVC(kernel='linear', C=C).fit(X, y)

# 画出决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
h = (x_max / x_min)/100
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = svc.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.xticks(())
plt.yticks(())
plt.show()

Résumé :
Grâce aux étapes ci-dessus, nous avons écrit avec succès l'algorithme SVM en utilisant Python et l'avons démontré via l'ensemble de données Iris. Bien sûr, il ne s'agit que d'une simple application de l'algorithme SVM. Il existe de nombreuses façons d'étendre et d'améliorer SVM, comme utiliser différentes fonctions du noyau, ajuster le paramètre de régularisation C, etc. J'espère que cet article vous aidera à apprendre et à comprendre l'algorithme SVM.

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