Python影像處理(15):SVM分類器

來源:互聯網
上載者:User

標籤:vs2013   opencv   python   影像處理   

快樂蝦

http://blog.csdn.net/lights_joy/

歡迎轉載,但請保留作者資訊


在opencv中支援SVM分類器,本文嘗試在python中調用它。


和前面的貝葉斯分類器一樣,SVM也遵循先訓練再使用的方式,我們直接在貝葉斯分類器的測試代碼上做簡單修改,完成兩類資料點的分類。


首先也是先建立訓練用的資料,需要注意的是這裡的train_label必須是整數類型,而不是float:


# 訓練的點數train_pts = 30# 建立測試的資料點,2類# 以(-1.5, -1.5)為中心rand1 = np.ones((train_pts,2)) * (-2) + np.random.rand(train_pts, 2)print(‘rand1:‘)print(rand1)# 以(1.5, 1.5)為中心rand2 = np.ones((train_pts,2)) + np.random.rand(train_pts, 2)print(‘rand2:‘)print(rand2)# 合并隨機點,得到訓練資料train_data = np.vstack((rand1, rand2))train_data = np.array(train_data, dtype=‘float32‘)train_label = np.vstack( (np.zeros((train_pts,1), dtype=‘int32‘), np.ones((train_pts,1), dtype=‘int32‘)))# 顯示訓練資料plt.figure(1)plt.plot(rand1[:,0], rand1[:,1], ‘o‘)plt.plot(rand2[:,0], rand2[:,1], ‘o‘)plt.plot(rand2[:,0], rand2[:,1], ‘o‘)

類似這樣的資料:



在得到訓練資料後,接著建立一個SVM分類器並配置訓練參數:


# 建立分類器svm = cv2.ml.SVM_create()svm.setType(cv2.ml.SVM_C_SVC)  # SVM類型svm.setKernel(cv2.ml.SVM_LINEAR) # 使用線性核svm.setC(1.0)

接著我們對此分類器進行訓練:

# 訓練ret = svm.train(train_data, cv2.ml.ROW_SAMPLE, train_label)

在訓練完成後就可以使用測試資料進行預測了:

# 測試資料,20個點[-2,2]pt = np.array(np.random.rand(20,2) * 4 - 2, dtype=‘float32‘)(ret, res) = svm.predict(pt)print("res = ")print(res)

predict通過res返回得到一個20x1的數組,每一行對應一個輸入焦點,計算得到的值就是分類的序號,在這裡是0和1,我們取0.5為閾值進行分類並顯示結果:

# 按label進行分類顯示plt.figure(2)res = np.hstack((res, res))# 第一類type_data = pt[res < 0.5]type_data = np.reshape(type_data, (type_data.shape[0] / 2, 2))plt.plot(type_data[:,0], type_data[:,1], ‘o‘)# 第二類type_data = pt[res >= 0.5]type_data = np.reshape(type_data, (type_data.shape[0] / 2, 2))plt.plot(type_data[:,0], type_data[:,1], ‘o‘)plt.show()

看看最後的結果:




最後,通過svm. getSupportVectors擷取支援向量。

# 支援向量vec = svm.getSupportVectors()print(vec)













??

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Python影像處理(15):SVM分類器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.