使用LIBSVM工具实现样本分类预测——MatLab

准备工作:

  1. https://www.csie.ntu.edu.tw/~cjlin/libsvm/,下载LIBSVM;(LIBSVM工具相较于MATLAB自带的工具:1).支持多分类及回归(‘-s 0’ ,‘-s 1' -> 多分类'-s 3';'-s 4' -> 回归;'-s 2' -> one-class SVM),matlab自带的仅支持二分类,且不支持回归2).支持核函数种类多样(linear;polynomial;RBF(radial basis function);sigmoid;precomputed kernel)3).解决算法是SMO(序列最小化),matlab自带的三种SMO,QP(经典二次规划),LS;4).能够调节RBF核函数的参数,matlab自带的不能调节)
  2. 将libsvm文件夹设为matlab搜索路径,并进入.../libsvm-3.xx/matlab目录; 
  3. 运行mex -setup,选择编译器(前提是要安装有C++编译器,如VS2010)
  4. 命令窗口输入:make,生成四个文件:libsvmread.mexw32,libsvmwrite.mexw32,svmtrain.mexw32,svmpredict.mexw32(原程序是C++编译的,这四个文件是编译后包含了能够在matlab环境下运行的算法)

接下来便可以进行数据分类了:

  1. 在.../libsvm3.xx目录下运行:[label,inst] = libsvmread('heart_scale')(’heart_scale‘默认在libsvm主目录下,且libsvm要求有参数接受读取的结果,读取结果为:inst:270*13\label:270*1)
  2. 运行:model = svmtrain(label,inst)(训练函数,由于matlab自带有svmtrain函数,因此需要进入matlab/toolbox/搜索svmtrain.m,将其改为svmtrain_matlab.m,否则会调用自带的svmtrain函数
  3. 其中:model.Paramaters = [-s,-t,-d,-g,-r](model的Paramaters输出了参数组)
  4. 运行:[predict,accuracy,probabilityEstimates] = svmpredict(label,inst,model)(利用模型预测所有样本,libsvm要求所有接受参数都填写,否则无输出)
  5. accuracy是一个3*1矩阵,

    86.6666666666667->准确度
    0.533333333333333->MSE(mean squared error)
    0.532639204545455->r^2(squared correlation coefficient)

posted @ 2016-05-13 14:25  HsiehTengK`o  阅读(3641)  评论(0编辑  收藏  举报