用SVM實現機器學習與預測
阿新 • • 發佈:2018-11-16
# 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)