libsvm在matlab中开始的第一关

首先申明:本文主要转自浙大女神的blog,我只是进行了一点修改,勿喷

1. 参考网站:

libsvm库下载:http://www.csie.ntu.edu.tw/~cjlin/libsvm/

视频:http://v.youku.com/v_showMini/id_XMjc2NTY3MzYw_ft_131.html (有小问题,等下会提到)

详解:http://www.matlabsky.com/thread-11925-1-1.html


2. 操作流程:

请注意:详细操作流程请参考上面的“详解”网站,这里只说大框架和详解里没有提到的问题。

A.设置path

File->set path ->add with subfolders->加入libsvm-3.11文件夹的路径

B. 在matlab中编译

目的:将libsvm-3.11\matlab 中 libsvmwrite.c 等 C++文件编译成 libsvmread.mexw32 等matlab文件,这样就可以在command window中被直接调用了。

注意:在最外面的Readme中有提到已经有编译好的文件,比如在libsvm-3.11\windows中也会看到libsvmread.mexw32,但这里不要被误导!还是需要你自己再编译一遍的!(还有如果matlab版本太低,如matlab 7.0是不能用VS作为编译器的,只能用VC++ 6.0,这是我劝你给matlab升级吧!别装vc了~我就是这样,升级到Matlab 2011b就可以用VS2008做编译器了

C.加载数据集


加载数据集

[cpp]  view plain copy
  1. load heart_scale  

有两个数据集,一个是C++的, 一个是matlab的。libsvm库中下载的是C++数据,

所以matlab加载我们下载的heart_scale是会报错的:<这就是视频中遗漏的小问题>

[cpp]  view plain copy
  1. ??? Error using ==> load  
  2. Number of columns on line 3 of ASCII file D:\ZJU projects\machine learning\libsvm-3.11\heart_scale must be the same as previous lines.  
这时怎么办?

法1、下载matlab数据集(http://download.csdn.net/detail/abcjennifer/4215779

然后将下载下来的数据集中的heart_scale.mat复制到你最初libsvm的根目录下

接着运行load heart_scale  即可

法2、用libsvmread而非load,就是这里

[cpp]  view plain copy
  1. libsvmread('heart_scale');  

这样就可以加载数据集了,完成该步骤后发现Workspace中出现了heart_scale_inst 和 heart_scale_label,说明正确。

ok,下一步我们来测试svm的训练和predict

D.train & predict

[cpp]  view plain copy
  1. model = svmtrain(heart_scale_label,heart_scale_inst);  
  2. [predict_label,accuracy] = svmpredict(heart_scale_label,heart_scale_inst,model);  
可以看到结果:

[cpp]  view plain copy
  1. Accuracy = 86.6667% (234/270) (classification)  

另外,也可以用其他的数据测试集测试你的libsvm是否装好,不一定非得用这个heart_scale.mat这个数据集


原文见:http://blog.csdn.net/abcjennifer/article/details/7370177
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值