早就了解过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)
这样就算安装完成了,收工~~!