Libsvm的MATLAB调用和交叉验证
今天听了一个师兄的讲课,才发现我一直在科研上特别差劲,主要表现在以下几个方面,(现在提出也为了督促自己在以后的学习工作道路上能够避免这些问题)
1、做事情总是有头无尾,致使知识点不能一次搞透,每次在用到相同知识点的时候才发现之前对这个知识了解的还是不透彻。
2、不善于总结,做的东西(如代码和论文)很多也比较杂,但是却没有记录每一项工作,致使到最后很难理清之前做过的东西。
3、检索能力较差,致使寻找自己需要的资料需要耗费太长的时间。
4、阅读文献的数量太少,因此很难提出新的想法和见解。
以上4点是我认为的科研和工作中主要需要提高的地方,我也从现在起开始逐条的改善,希望1个月之后的我可以养成良好的习惯,使得上面的缺陷得以修正。
下面就进行第一个改善:SVM接触时间很长了,理论和代码都研究和使用过,由于网上的资料整理的很多,自己就懒得整理,每次有问题就百度、谷歌一下基本都解决了,但是现在如果有人问我相关具体的内容,我还是很难答出来,毕竟别人的东西就是别人的,看了并不代表你掌握了,只有自己掌握的知识才是自己的,才能与人交流,并提出自己的见解。
一、SVM如何使用MATLAB调用
我之所以介绍这个,主要的原因是,大家在做机器视觉算法时使用最多的工具,而matlab中自带的svm工具箱又只能用于分两类的情况,而且不能进行交叉验证选择合适的参数,但是在正常的使用时不可避免的会遇到分多类的问题,而且选择合适的参数对于SVM也非常重要。下面介绍如何下载libsvm,配置matlab环境。
主要参考的主页有:http://blog.csdn.net/abcjennifer/article/details/7370177
1. 参考网站:
libsvm库下载:http://www.csie.ntu.edu.tw/~cjlin/libsvm/,http://www.matlabsky.com/thread-9327-1-1.html(faruto,推荐)
视频:http://v.youku.com/v_showMini/id_XMjc2NTY3MzYw_ft_131.html
详解:http://www.matlabsky.com/thread-11925-1-1.html
2、配置MATLAB环境
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中被直接调用了。
操作如下:1、mex -setup
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers [y]/n? y
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc-win32 C 2.4.1 in D:\MATLAB~1\sys\lcc
[2] Microsoft Visual C++ 6.0 in D:\Microsoft Visual Studio
[0] None
Compiler: (此处不同版本的MATLAB和自己安装的编译器的不同显示会有差别,因此只要选择你已经安装的编译器就好了)
Compiler: 2
Please verify your choices:
Compiler: Microsoft Visual C++ 6.0
Location: D:\Microsoft Visual Studio
Are these correct [y]/n? y
Trying to update options file: C:\Users\faruto\AppData\Roaming\MathWorks\MATLAB\R2009b\mexopts.bat
From template: D:\MATLAB~1\bin\win32\mexopts\msvc60opts.bat
Done . . .
2、make
make
此过程中一定要注意将路径转换到matlab路径下,这样才能调用make函数进行make.
上述需要注意的地方都已经指出来了,我也已经在matlab2012a和VS2010中测试过,好使。
操作结束就可以使用现成的数据集heart_scale来测试一下了,出现Accuracy = 86.6667% (234/270) (classification)
load('heart_scale')
model = svmtrain(heart_scale_label,heart_scale_inst);
[predict_label,accuracy] = svmpredict(heart_scale_label,heart_scale_inst,model);
其中的‘heart_scale’在libsvm中自带的mat文件。
二、如何参数寻优
参考网址:http://www.ilovematlab.cn/thread-47819-1-1.html,这篇帖子介绍的非常详细,主要使用了SVMcg函数来进行C和g的寻优。
%添加参数寻优代码
[bestacc,bestc,bestg] = SVMcg(heart_scale_label,heart_scale_inst,-,,-,,,,);
因为此测试用例并不规范,因此使用不能很好的体现参数寻优之后的优势。
以上就是实验部分,通过小小的实验可以对SVM的工作有了大概的了解,同时也促进自己学习理论的动力,因此下面一片博客就主要介绍SVM理论方面的内容,因为SVM理论方面的介绍也非常多,因此我主要把那些好的参考内容进行整理,同时将自己的心得体会和理解写出来,方便自己查看,也方便大家交流。
Libsvm的MATLAB调用和交叉验证的更多相关文章
- MATLAB曲面插值及交叉验证
在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点.插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值.曲面插值是对三维数据进行离 ...
- 如何调用sklearn模块做交叉验证
终于搞明白了如何用sklearn做交叉验证!!! 一般在建立完模型之后,我们要预测模型的好坏,为了试验的可靠性(排除一次测试的偶然性)我们要进行多次测试验证,这时就要用交叉验证. sklearn中的s ...
- libsvm交叉验证与网格搜索(参数选择)
首先说交叉验证.交叉验证(Cross validation)是一种评估统计分析.机器学习算法对独立于训练数据的数据集的泛化能力(generalize), 能够避免过拟合问题.交叉验证一般要尽量满足:1 ...
- Matlab交叉验证函数——crossvalind
Generate cross-validation indices 生成交叉验证索引 Syntax语法 Indices = crossvalind('Kfold', N, K) %K折交叉验证 ...
- Libsvm在matlab环境下使用指南
一.安装 http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/.在这个地址上可以下的包含matlab接口的源程序.下载完后可以放到放到任意的盘上解压,最好建 ...
- 机器学习:weka中Evaluation类源码解析及输出AUC及交叉验证介绍
在机器学习分类结果的评估中,ROC曲线下的面积AOC是一个非常重要的指标.下面是调用weka类,输出AOC的源码: try { // 1.读入数据集 Instances data = new Inst ...
- k-折交叉验证(k-fold crossValidation)
k-折交叉验证(k-fold crossValidation): 在机器学习中,将数据集A分为训练集(training set)B和测试集(test set)C,在样本量不充足的情况下,为了充分利用数 ...
- 交叉验证(cross validation)
转自:http://www.vanjor.org/blog/2010/10/cross-validation/ 交叉验证(Cross-Validation): 有时亦称循环估计, 是一种统计学上将数据 ...
- 机器学习——交叉验证,GridSearchCV,岭回归
0.交叉验证 交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set) ...
随机推荐
- cygwin如何断点续传
对于Cygwin,如果想安装的东西比较多的话,推荐先选择“Download without installing”,下载完了再从本地安装. 好了,说关于断点续传.我所知道的是—— 网上有说法:下载失败 ...
- 快速学习bootstrap前台框架
W3c里的解释 使用bootstrap需要注意事项 1. 在html文件第一行要加上<!doctype html>[s1] 2. 导入bootstrap.min.css文件 3. 导 ...
- uCos的多任务实现
uCos的多任务实现 作为操作系统(OS),最基本的一项服务就是提供多线程,在实时操作系统uCos里,多线程被称为多任务(Task).多任务并不是CPU能真正同时运行多个程序,实际是靠CPU在多个任务 ...
- sqlplus时报Linux-x86_64 Error: 13: Permission denied
在本机上非oracle用户运行sqlplus时,报以下错误:[cpdds@node1 ~]$ sqlplus cpdds_pdata/cpdds_pdata SQL*Plus: Release 10. ...
- 写出完美论文的十个技巧10 Tips for Writing the Perfect Paper
10 Tips for Writing the Perfect Paper Like a gourmet meal or an old master painting, the perfect col ...
- class ha_innobase: public handler
/** The class defining a handle to an Innodb table */ class ha_innobase: public handler { row_prebui ...
- cd /d %~dp0
cd /d %~dp0 注册服务的bat要用到,普通的执行没关系,但是用“管理员角色”执行,默认的起始目录会到 c:\windows\system 下,用上面一句可以回到当前执行bat的目录
- UVa 1467 (贪心+暴力) Installations
题意: 一共有n项服务,每项服务有安装的时间s和截止时间d.对于每项任务,如果有一项超出截止时间,惩罚值为所超出时间的长度.问如何安装才能使惩罚值最大的两个任务的惩罚值之和最小. 分析: 如果是求总惩 ...
- [转载]ios入门篇 -hello Word(1)
温馨提示:,如果您使用移动终端阅读本篇文章,请连接wifi的情况下阅读,里面有大量图片,以免造成您不必要的损失. 潜水博客园很多年,闲来无事,聊一下自己的经历,语文不好(如有什么错别字,请您在下评 ...
- ubuntu12.04上搭建darwin streaming server6.03
个人建议:使用DarwinStreamingSrvr5.5.5,因为DarwinStreamingSrvr6.0.3安装过程中有很多问题需要解决!而且安装只需执行./Install就可以! 1:下载d ...