Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Sokong contoh algoritma mesin vektor dalam Python

Sokong contoh algoritma mesin vektor dalam Python

王林
王林asal
2023-06-10 16:42:141336semak imbas

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!

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
Artikel sebelumnya:Isih pantas menggunakan PythonArtikel seterusnya:Isih pantas menggunakan Python