Bagaimana menulis algoritma SVM dalam Python?
SVM (Mesin Vektor Sokongan) ialah algoritma klasifikasi dan regresi yang biasa digunakan berdasarkan teori pembelajaran statistik dan prinsip pengurangan risiko struktur. Ia mempunyai ketepatan tinggi dan keupayaan generalisasi, dan sesuai untuk pelbagai jenis data. Dalam artikel ini, kami akan memperkenalkan secara terperinci cara menulis algoritma SVM menggunakan Python dan memberikan contoh kod khusus.
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))
Kemudian, kami menggunakan grid ini sebagai ciri input untuk meramal dan mendapatkan sempadan keputusan.
Z = svc.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape)
Akhir sekali, kami menggunakan perpustakaan matplotlib untuk melukis titik sampel dan sempadan keputusan.
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()
Ringkasan:
Melalui langkah di atas, kami berjaya menulis algoritma SVM menggunakan Python dan menunjukkannya melalui set data Iris. Sudah tentu, ini hanyalah aplikasi mudah algoritma SVM Terdapat banyak cara untuk melanjutkan dan menambah baik SVM, seperti menggunakan fungsi kernel yang berbeza, melaraskan parameter regularisasi C, dsb. Saya harap artikel ini akan membantu anda mempelajari dan memahami algoritma SVM.
Atas ialah kandungan terperinci Bagaimana untuk menulis algoritma SVM dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!