sklearn光速入門實踐[1]——實現一個簡單的SVM分類器

python的sklearn庫封裝了許多常用的機器學習算法,而且入門簡單,調用方便。下面我們用sklearn庫和簡單的幾個點作爲數據集,來實現一個簡單的SVM分類器。

首先,準備好數據。我們把(2,0),(0,2),(0,0)這三個點當作類別1;(3,0),(0,3),(3,3)這三個點當作類別2,訓練好SVM分類器之後,我們預測(-1,-1),(4,4)這兩個點所屬的類別。示意圖如下:
在這裏插入圖片描述

1、組裝數據集。

在組裝數據集的時候,這裏最重要的就是要注意數據的組合格式。data中每行元素作爲一個樣本,各列分別是該樣本的各個屬性,比如上邊的幾個點,封裝成如下格式:x = np.array([[2,0],[0,2],[0,0],[3,0],[0,3],[3,3]]) 。label排成一行,與data中的數據相對應即可:y = np.array([1,1,1,2,2,2])

【注】:這裏利用Pandas進行封裝也可以。

import pandas as pd
data = np.array([[2,0,1],[0,2,1],[0,0,1],[3,0,2],[0,3,2],[3,3,2]])
data = pd.DataFrame(data,column = [0,1,2])
x = data[[0,1]]
y = data[2]

2、設置SVM分類器的屬性

model = SVC(kernel='linear', probability=True)
當probability=False時,沒辦法調用 model.predict_proba()函數
可選的屬性列表:

  • 待完善1
  • 待完善2

3、執行SVM分類器

model.fit(x,y)

4、預測

pre = model.predict_proba(C)

最後,附完整代碼如下:

from sklearn.svm import SVC
import numpy as np
x = np.array([[2,0],[0,2],[0,0],[3,0],[0,3],[3,3]])
y = np.array([1,1,1,2,2,2])
model = SVC(kernel='linear', probability=True)#probability=False時,沒辦法調用 model.predict_proba()函數
model.fit(data,label)
C = [[-1,-1],[4,4]]
pre = model.predict_proba(C)
print(pre)
pre1 = model.predict(C)
print(pre1)

結果如下:

[[0.62507004 0.37492996]
 [0.33332917 0.66667083]]
[1 2]

可以看到,預測(-1,-1)的標籤是1的概率爲0.62507004,2的概率爲0.37492996。最終預測爲類別1。
預測(4,4)的標籤是1的概率爲0.33332917,2的概率爲0.66667083。最終預測爲類別2。這個結果與我們在圖中直觀看到的結果相符。

官方文檔地址:sklearn.svm.SVC

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章