早就瞭解過SVM了,一直沒深入學,最近用到了,補習了一下,記錄下來。
準備工作
matlab python libsvm都有svm的工具包。
libsvm 臺灣的林智仁教授開發的工具包,用c/c++寫的,可以在matlab python 等處使用。
python中有sklearn工具包。
新版本的matlab中也有svm工具箱,svmtrain已經廢棄了,可查函數fitcsvm和ClassificationSVM。
然而,本次決定先採用libsvm。
libsvm安裝
參考教程:https://blog.csdn.net/rstaotao/article/details/96583340
matlab 2018b win10 64位
下載地址 https://www.csie.ntu.edu.tw/~cjlin/libsvm/
將解壓後的libsvm-3.23文件夾放在你安裝matlab的路徑下,toolbox文件夾中。
設置matlab路徑,包含子文件夾
轉到matlab文件夾下,執行make命令,將c文件編譯成matlab可調用的文件。
測試一下:
自帶數據集heart_scale,拷貝到當前文件夾下
[heart_scale_label,heart_scale_inst]=libsvmread('heart_scale');
model = svmtrain(heart_scale_label,heart_scale_inst);
得到:
optimization finished, #iter = 162
nu = 0.431029
obj = -100.877288, rho = 0.424462
nSV = 132, nBSV = 107
Total nSV = 132
[predict_label,accuracy,dec_values] = svmpredict(heart_scale_label,heart_scale_inst,model);
得到:
Accuracy = 86.6667% (234/270) (classification)
這樣就算安裝完成了,收工~~!