Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk menulis algoritma SVM dalam Python?

Bagaimana untuk menulis algoritma SVM dalam Python?

WBOY
WBOYasal
2023-09-21 12:06:11787semak imbas

Bagaimana untuk menulis algoritma SVM dalam Python?

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.

  1. Pasang Python dan perpustakaan berkaitan
    Sebelum anda mula menulis algoritma SVM, anda perlu terlebih dahulu memastikan bahawa Python dan perpustakaan pembelajaran mesin yang berkaitan telah dipasang. Adalah disyorkan untuk menggunakan Anaconda sebagai persekitaran pembangunan bersepadu untuk Python. Ia bukan sahaja disertakan dengan penterjemah Python, tetapi juga termasuk banyak pustaka pembelajaran mesin dan pengkomputeran saintifik yang biasa digunakan. Pasang perpustakaan scikit-learn menggunakan arahan berikut:
pip install scikit-learn
  1. Import perpustakaan yang diperlukan
    Import perpustakaan yang diperlukan, termasuk scikit-learn, numpy dan matplotlib.
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
  1. Memuatkan set data
    Untuk menunjukkan penulisan algoritma SVM, kami akan menggunakan set data Iris yang terkenal. Set data Iris mengandungi 150 sampel bunga iris, setiap sampel mempunyai 4 ciri. Kami membahagikan set data kepada dua kategori: Setosa dan Versicolor, dua jenis bunga iris.
iris = datasets.load_iris()
X = iris.data[:, :2]  # 我们只使用前两个特征
y = iris.target
  1. Latih model
    Gunakan SVM untuk melatih model, di sini kita menggunakan fungsi kernel linear.
C = 1.0  # SVM正则化参数
svc = svm.SVC(kernel='linear', C=C).fit(X, y)
  1. Lukis sempadan keputusan
    Untuk lebih memahami kesan klasifikasi SVM, kita boleh melukis sempadan keputusan. Mula-mula, kami mencipta grid untuk mencuba keseluruhan ruang ciri.
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()
  1. Contoh kod penuh
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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn