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

准备工作:

    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自带的不能调节)将libsvm文件夹设为matlab搜索路径,并进入…/libsvm-3.xx/matlab目录;运行mex -setup,选择编译器(前提是要安装有C++编译器,如VS2010);命令窗口输入:make,生成四个文件:libsvmread.mexw32,libsvmwrite.mexw32,svmtrain.mexw32,svmpredict.mexw32(原程序是C++编译的,这四个文件是编译后包含了能够在matlab环境下运行的算法);

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

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

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

没有什么可留恋,只有抑制不住的梦想,

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

相关文章:

你感兴趣的文章:

标签云: