Mesin vektor sokongan, nama penuh bahasa Inggeris ialah Mesin Vecto Sokongan, atau singkatannya SVM. Ia adalah model pengelasan yang sangat baik, terutamanya dalam sampel kecil, pengecaman corak tak linear dan berdimensi tinggi. SVM telah dicadangkan oleh pasukan Vapnik pada tahun 1992. Ia pada mulanya digunakan untuk menyelesaikan masalah klasifikasi binari, dan kemudiannya berkembang secara beransur-ansur menjadi algoritma yang boleh mengendalikan masalah berbilang klasifikasi.
Python ialah bahasa pengaturcaraan ringkas dan berkuasa yang melaksanakan pelbagai pakej algoritma pembelajaran mesin, termasuk SVM. Artikel ini akan memperkenalkan langkah-langkah untuk melaksanakan algoritma mesin vektor sokongan melalui Python.
1. Sediakan data
Mari bina satu set data latihan yang ringkas. Buat set data contoh di mana x1 mewakili ketinggian, x2 mewakili berat dan y ialah label kelas (0 atau 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()
Dalam set data ini, kami mengklasifikasikan orang sebagai lelaki atau perempuan.
2. Pilih pengelas
Seterusnya, kita perlu memilih pengelas yang sesuai untuk masalah ini, iaitu SVM. Terdapat banyak varian SVM, tetapi di sini, kami menggunakan SVM linear.
Mari bina model SVM:
from sklearn.svm import SVC svm = SVC(kernel='linear') svm.fit(X_train, y_train)
Di sini, kami menggunakan kelas SVC
dan tentukan parameter kernel
sebagai linear
, menunjukkan bahawa kami menggunakan kernel linear.
3. Lukiskan sempadan keputusan
Kami ingin mengetahui prestasi model, supaya kami boleh melukis sempadan keputusan pengelas:
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()
Selepas larian selesai , anda boleh Lihat bahawa sempadan keputusan pengelas diplotkan.
4. Ramalkan data baharu
Kita boleh menggunakan model terlatih untuk meramal data baharu.
X_test = np.array([[166, 70], [185, 90], [170, 75]]) y_test = svm.predict(X_test) print(y_test)
Di sini, kami menggunakan fungsi predict
untuk membuat ramalan pada tiga sampel data baharu. Ia akan mengembalikan kategori mereka.
Kesimpulan
Dalam artikel ini, kami memperkenalkan cara menggunakan algoritma mesin vektor sokongan dalam Python. Kami membina pengelas dengan mencipta set data latihan mudah dan menggunakan SVM linear. Kami juga memplot sempadan keputusan pengelas dan menggunakan model untuk meramalkan sampel data baharu. SVM juga merupakan algoritma yang sangat popular pada banyak masa dan boleh mencapai prestasi yang baik dalam banyak bidang. Jika anda ingin menguasai lebih banyak algoritma pembelajaran mesin semasa memproses data, maka SVM juga patut dipelajari.
Atas ialah kandungan terperinci Sokong contoh algoritma mesin vektor dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!