Maison >développement back-end >Tutoriel Python >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.
pip install scikit-learn
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))
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()
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!