libsvm在MATLAB的安装

来源:互联网 发布:仿真优化软件 编辑:程序博客网 时间:2024/05/16 02:09
本文的配置路径为 D:\MATLAB\R2010a\toolbox\libsvm-3.12\matlab,从始至终都是在这个目录下进行的。当然,你也可以将编译好的文件拷贝到任何地方,只要你当前的工作目录中有这四个文件即可。
1.下载libsvm
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
我的matlab版本 R2012b,我的libsvm版本3.12

2.解压至指定目录
将libsvm解压至D:\MATLAB\R2010a\toolbox下,你也可以解压至你喜欢的地方。

3. set path 里把libsvm文件夹包括进来。

4.编译 。下载下来的接口包里有svm的一些源文件,没有可执行的exe文件,所以,必须先将svmtrain等源文件编译为matlab可以使用的dll等文件。于是要先编译,首先在matlab设置当前目录为 D:\MATLAB\R2010a\toolbox\libsvm-3.12\matlab(即你的libsvm-3.12\matlab下,磁盘可能因人不同)。

5.执行编译
在matlab命令窗口中输入
mex -setup
之后有一系列的选择,自己按自己的电脑选择就可以,一会出现
Done . . . 
编译器选择好了之后,用make.m编译
命令窗口输入 make
可以看到新编译出4个文件libsvmread.mexw32,libsvmwrite.mexw32,svmtrain.mexw32,svmpredict.mexw32。

6.测试
此时需注意,libsvm 3.12中提供的是c++版本的数据集heart_scale,这里需要加载matlab版本的数据集。这两个数据集有什么不同呢?C++版本的数据集里面如果某一个样本的某一个特征为0,这个特征可以不写在数据集中,但是在matlab版本中会报错。

注意到libsvm-3.12下有一个数据文件,名称为heart_scale。这是一个libsvm格式的数据文件。可使用libsvmread函数将其转化为matlab格式。

可使用以下代码测试:

[heart_scale_label,heart_scale_inst]=libsvmread('heart_scale');

model = svmtrain(heart_scale_label,heart_scale_inst, '-c 1 -g 0.07');

[predict_label, accuracy, dec_values] =svmpredict(heart_scale_label, heart_scale_inst, model); % test the trainingdata


输出

optimization finished, #iter = 162

nu = 0.431029

obj = -100.877288, rho = 0.424462

nSV = 132, nBSV = 107

Total nSV = 132

>> [predict_label,accuracy] = svmpredict(heart_scale_label,heart_scale_inst,model);

Accuracy = 86.6667% (234/270) (classification)



0 0
原创粉丝点击