Libsvm-mat也是libsvm大家族的成员,只是matlab下的版本而已。
在libsvm的网站上下载libsvm-mat-2.9-1.zip文件,解压后放在任意目录下(比如c:/libsvm-mat-2.9-1下)
打开matlab,切换到c:/libsvm-mat-2.9-1目录下(cd c:/libsvm-mat-2.9-1),键入以下命令:
mex -setup
Matlab会询问你是否需要locate installed compiler,选择y,然后根据需要选择一个编译器即可。确认时选择y即可。
(但是这里通常有一个问题,就是MATLAB根本不知道你有没有安装c++编译器,所以可能产生错误,所以如果选择y不行,那就选择n,自己来选择要用的c++编译器,前提条件是你必须安装了对应的c++编译器)
这部分编译完成后,然后键入
make
就会生成svmtrain.dll,svmpredict.dll和read_sparse.dll这三个文件(对于Matlab 7.1及以上版本,生成的对应文件为svmtrain.mexw32,svmpredict.mexw32和read_sparse.mexw32)
然后可以在matlab的菜单File->Set Path->Add Folder里,把c:/libsvm-mat-2.9-1目录添加进去,这样以后在任何目录下都可以调用libsvm的函数了。
为了检验libsvm和matlab之间的接口是否已经配置完成,可以在matlab下执行以下命令:
load heart_scale.mat
model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 2');
如果运行正常并生成了model这个结构体(其中保存了所有的支持向量及其系数),那么说明libsvm和matlab之间的接口已经完全配置成功。
使用时,根据你自己的训练样本的特征数组、类别数组,对例子中的参数做对应替换就行了。
>> model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
自己使用时,heart_scale_label换成你自己的类别,heart_scale_inst换成自己的特征属性矩阵。
这个运行后就得到了训练后的model模型。
下面就要使用model进行预测了:
>> [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model);
预测使用的数据格式和训练样本的相同,heart_scale_label换为你测试样本的类别列向量,heart_scale_inst换成你测试样本 的特征属性矩阵。运行结果,就在predict_label, accuracy, dec_values三个变量中。
类别预测时,预测的类别放在predict_label中;回归预测时,结果放在dec_values中。