您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 基于libsvm的支持向量机学习
基于Libsvm的支持向量机学习1.Matlab环境下的libsvm工具箱的安装及测试LibSVM是台湾林智仁(Chih-JenLin's)教授2001年开发的一套支持向量机的库,这套库运算速度还是挺快的,可以很方便的对数据做分类或回归。由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为目前国内应用最多的SVM的库。这套库可以从林智仁的homepage上免费获得,目前已经发展到3.0版。1.1.Matlab下Libsvm的安装在MATLAB平台下安装libsvm-mat一般有以下几个大步骤:将libsvm所在工具箱添加到matlab工作搜索目录(File——》SetPath…——》AddwithSubfolders...);选择编译器(mex-setup);编译文件(make)。详细步骤:(1).将libsvm-mat所在文件夹目录添加到MATLAB工作搜索目录(File——》SetPath…——》AddwithSubfolders...)这第一步很重要,如果没有将libsvm所在文件夹目录正确的添加到MATLAB工作搜索目录,使用的时候就会出现???Undefinedfunctionorvariable'XXX'.等等报错。首先明晰一下MATLAB工作搜索目录(路径)和当前目录(路径)这两个概念:当前目录[CurrentFolder]是指MATLAB当前所在的路径,MATLAB菜单栏下面有一个CurrentFolder可以在这里进行当前所在目录的更改。工作搜索目录(路径)是指当你使用某一个函数的时候,MATLAB可以进行搜索该函数的所有的目录集合。注:当你使用某一个函数的时候,MATLAB首先会从当前目录搜索调用该函数,如果当前目录没有该函数,MATLAB就会从工作搜索目录按照从上到下的顺序进行搜索调用该函数,如果工作搜索目录中也没有该函数,就会给出???Undefinedfunctionorvariable'XXX'这个报错。所以呀,往后如果出现这个报错,您不妨看一下您想调用的函数所在目录是否添加到MATLAB工作搜索目录中了。说了这么多,第一步就是将libsvm-mat所在文件夹复制到某一个地方后,在MATLAB菜单栏中选择File——》SetPath…——》AddwithSubfolders...然后选择之前存放libsvm-mat的文件夹,然后点击保存就可以了。2.选择编译器(mex-setup)好多工具箱其实在上面那步之后就算是“安装”成功了,有的小朋友可能会问:“为啥安装libsvm会选神马编译器,干嘛!?”,因为libsvm的原始版本是用c++写的,这里为了能在MATLAB平台下使用,需要用编译器编译一下,生成一个类似于.m文件的东东(.mexw32文件)这样就可以在MATLAB平台下使用libsvm了。下面进行编译器的选择,哎,这里就涉及到一个问题,既然是“选择”,那说明你电脑上需要安装了编译器才行,否则选你妹啊,是吧,哎,这就又涉及到一个问题:“神马是编译器?!”,这里俺就不解释了,学过C语言的应该会懂得,不懂的百度去,这里我推荐使用MicrosoftVisualC++6.0编译器或者更高版本的visualstudio,一般MATLAB会自带一个编译器Lcc-win32C但这个在这里无法使用!为啥呢?因为libsvm源代码使用c++写的,而Lcc-win32C是一个c编译器,无法编译c++源代码!下面具体说说如何选择编译器。首先在MATLAB命令窗【CommondWindow】中输入:mex-setupRemark:注意mex后面要打一个空格然后是-setup。千万别忘记打一个空格,发现好多朋友在mex和-setup之间没有打空格!!会出现类似如下内容:Pleasechooseyourcompilerforbuildingexternalinterface(MEX)files:Wouldyoulikemextolocateinstalledcompilers[y]/n?这里问你是否locate本机安装的编译器,正规的选择y然后指定编译器即可,我们先来看一下选择y(选择n在后面说),好下面我们选择y。根据你本机安装的编译器,会出现类似如下内容:Pleasechooseyourcompilerforbuildingexternalinterface(MEX)files:Wouldyoulikemextolocateinstalledcompilers[y]/n?ySelectacompiler:[1]Lcc-win32C2.4.1inD:\MATLAB~1\sys\lcc[2]MicrosoftVisualC++6.0inD:\MicrosoftVisualStudio[0]NoneCompiler:然后你选择相应的编译器并确认即可:Compiler:2Pleaseverifyyourchoices:Compiler:MicrosoftVisualC++6.0Location:D:\MicrosoftVisualStudioArethesecorrect[y]/n?yTryingtoupdateoptionsfile:C:\Users\faruto\AppData\Roaming\MathWorks\MATLAB\R2009b\mexopts.batFromtemplate:D:\MATLAB~1\bin\win32\mexopts\msvc60opts.batDone...PS:matlab支持的编译器列表在这里查看:这样就表示编译器选择成功了(此步骤中可能会出现warning警告是正常现象,不用管的说~)。================================================================如果你输入mex–setup后在Pleasechooseyourcompilerforbuildingexternalinterface(MEX)files:Wouldyoulikemextolocateinstalledcompilers[y]/n?这一步选择y后,可选择的编译器里面有没你已经安装的编译器,表示MATLAB可能没有识别记录你安装的编译器的名字和目录(有时候会发生这种情况),此时你应该重新输入mex–setup后选择n手动进行编译器的设置:mex-setupPleasechooseyourcompilerforbuildingexternalinterface(MEX)files:Wouldyoulikemextolocateinstalledcompilers[y]/n?nSelectacompiler:[1]IntelC++9.1(withMicrosoftVisualC++2005SP1linker)[2]IntelVisualFortran10.1(withMicrosoftVisualC++2005SP1linker)[3]Lcc-win32C2.4.1[4]MicrosoftVisualC++6.0[5]MicrosoftVisualC++.NET2003[6]MicrosoftVisualC++2005SP1[7]MicrosoftVisualC++2008Express[8]MicrosoftVisualC++2008SP1[9]OpenWATCOMC++[0]NoneCompiler:4%选择的这个编译器一定是你本机安装了的,否则选择了也没有用YourmachinehasaMicrosoftVisualC++compilerlocatedatD:\MicrosoftVisualStudio.Doyouwanttousethiscompiler[y]/n?这样的话就可以手动选择你想要的编译器了,在YourmachinehasaMicrosoftVisualC++compilerlocatedatD:\MicrosoftVisualStudio.Doyouwanttousethiscompiler[y]/n?这个确认步骤,如果你的编译器的确是安装在MATLAB给出的这个目录(我这里是D:\MicrosoftVisualStudio)那么选择y确认即可,如果不是说明MATLAB没有识别出安装的地方,选择n手动指定目录即可,比如选择n后的结果如下:Compiler:4YourmachinehasaMicrosoftVisualC++compilerlocatedatD:\MicrosoftVisualStudio.Doyouwanttousethiscompiler[y]/n?nPleaseenterthelocationofyourcompiler:[C:\ProgramFiles\MicrosoftVisualStudio]此时输入你安装的编译器的完整目录即可比如:D:\MicrosoftVisualStudio这样编译器的选择就结束了,相应会遇到的问题大概也就是上面这些了。3.编译文件(make)这一步说白了就是运行一下libsvm工具箱中matlab文件夹下的make.m文件。首先需要把MATLAB的当前目录[CurrentFolder]调整到libsvm-mat所在的文件夹,如果你要问神马是“当前目录”?看第一步中,有关“MATLAB工作搜索目录(路径)和当前目录(路径)这两个概念”的讲解,i.e.当前目录[CurrentFolder]是指MATLAB当前所在的路径,MATLAB菜单栏下面有一个CurrentFolder可以在这里进行当前所在目录的更改。工作搜索目录(路径)是指当你使用某一个函数的时候,MATLAB可以进行搜索该函数的所有的目录集合。然后在MATLAB命令窗【CommondWindow】输入make如果成功运行没有报错,到此就说明libsvm-mat工具箱成功安装了。结果是生成下图中文件特别是生成svmpredict.mexw32和svmtrain.mexw321.2.安装测试Libsvm-mat工具箱中有自带的heart_scale.mat测试数据集,可以运行以下代码来check一下是否安装成功:matlab[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');matlabmodel=svmtrain(heart_scale_label,heart_scale_inst,'-c1-g0.07');matlab[predict_label,accuracy,dec_values]=svmpredict(heart_scale_label,heart_scale_inst,model);%testthetrainingdata如果出现下面这个结果,则说明肯定安装成功了:Accuracy=86.6667%(234/270)(classification)注:编译文件(make)这一步为神马要把MATLAB的当前目录[CurrentFolder]调整到libsvm-mat所在的文件夹呢?答曰:因为这一步要运行libsvm-mat工具箱中的make.m文件,因为当你使用某一个函数的时候,MATLAB首先会从当前目录搜索调用该函数,为了防止其他位置也有类似名字的make.m函数,所以这一步要把MATLAB的当前目录[CurrentFolder]调整到libsvm-mat所在的文件夹,优先运行libsvm-mat文件夹下的make.m文件。=========================================================一些额外要说明的注意事项:PS:make.m的文件内容如下:%Thismake.misusedunderWindowsmex-O-csvm.c
本文标题:基于libsvm的支持向量机学习
链接地址:https://www.777doc.com/doc-4274812 .html