LIBSVM-mat使用方法

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中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章