1. 程式人生 > >用SVM實現機器學習與預測

用SVM實現機器學習與預測

# 1. 思想    分類器
# 2. SVM本質 尋求一個最優的超平面   分類
# 3. svm 核:line
# 4. 資料    樣本
# 5. 訓練   SVM_create()     train()       predict
# 身高體重    訓練  預測
import cv2
import numpy as np
import matplotlib.pylab as plt
# 1  資料準備
rand1 = np.array([[155,48],[159,50],[164,53],[168,56],[172,60]])
rand2 = np.array([[152,53],[156,55],[160,56],[172,64],[176,65]])
# 2 lable 
lable = np.array([[0],[0],[0],[0],[0],[1],[1],[1],[1],[1]])

# 3 data
data = np.vstack((rand1,rand2))
data = np.array(data,dtype="float32")

# SVM 所有的資料必須有標籤  lable
# [155,48]->0 女生     [152,53]->1   男生
# 監督學習    0   負樣本     1   正樣本的資料
#   4   訓練
svm = cv2.ml.SVM_create()    #  ml 機器學習模組   SVM_create()建立
# 屬性設定
svm.setType(cv2.ml.SVM_C_SVC)    #  svm   type
svm.setKernel(cv2.ml.SVM_LINEAR)   #  線性   line  核心
svm.setC(0.01)
# 訓練
result = svm.train(data,cv2.ml.ROW_SAMPLE,lable)
# 預測
pt_data = np.vstack([[167,55],[162,57]])  # 0 女生    1   男士

pt_data = np.array(pt_data,dtype="float32")
print(pt_data)
(par1,par2)=svm.predict(pt_data)
print(par2)