matlab2019a加装libsvm指南
- 格式:docx
- 大小:545.53 KB
- 文档页数:2
Matlab下libsvm的配置使⽤【转】LIBSVM是⼀个由台湾⼤学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使⽤简单,功能强⼤,能够在matlab中使⽤。
⼀、安装1.下载在LIBSVM的主页上下载最新版本的软件包(libsvm-3.20),并解压到合适⽬录中。
2.编译如果你使⽤的是64位的操作的系统和Matlab,那么不需要进⾏编译步骤,因为⾃带软件包中已经包含有64位编译好的版本:libsvmread.mexw64、libsvmwrite.mexw64、svmtrain.mexw64、svmpredict.mexw64。
否则,需要⾃⼰编译⼆进制⽂件。
⾸先在matlab中进⼊LIBSVM根⽬录下的matlab⽬录(如C:\libsvm-3.20\matlab),在命令窗⼝输⼊>>mex -setup然后Matlab会提⽰你选择编译mex⽂件的C/C++编译器,就选择⼀个已安装的编译器。
之后Matlab会提⽰确认选择的编译器,输⼊y进⾏确认。
然后可以输⼊以下命令进⾏编译。
>>make注意,Matlab或VC版本过低可能会导致编译失败,建议使⽤最新的版本。
编译成功后,当前⽬录下会出现若⼲个后缀为mexw64(64位系统)或mexw32(32位系统)的⽂件。
3.重命名(可选,但建议执⾏)编译完成后,在当前⽬录下回出现svmtrain.mexw64、svmpredict.mexw64(64位系统)或者svmtrain.mexw32、svmpredict.mexw32(32位系统)这两个⽂件,把⽂件名svmtrain和svmpredict相应改成libsvmtrain和libsvmpredict。
这是因为Matlab中⾃带有SVM的⼯具箱,⽽且其函数名字就是svmtrain和svmpredict,和LIBSVM默认的名字⼀样,在实际使⽤的时候有时会产⽣⼀定的问题,⽐如想调⽤LIBSVM的变成了调⽤Matlab SVM。
LibLinear(SVM包)的MATLAB安装1 LIBSVM介绍LIBSVM是众所周知的⽀持向量机分类⼯具包(),运⽤⽅便简单,其中的核函数()可以⾃⼰定义也可以默认。
但是对⼀些⼤数据来说,有没有⾮线性映射,他们的性能差不多。
如果不使⽤核,我们可以⽤线性分类或者回归来训练⼀个更⼤的数据集。
这些数据往往具有⾮常⾼维的特征,例如⽂本分类Document classification。
所以LIBSVM就诞⽣了。
关于的详细介绍及其⽐较可以参见链接:2 的MATLAB安装步骤我使⽤的是最新版本liblinear1.95,MATLAB是R2012b.(2)解压到相应的⽂件夹,在MATLAB中设置⼦路径,打开matlab,点击File->SetPath->Add withSubfolders,找到liblinear-1.95\matlab 所在⽂件夹,点击save,点击close。
(3)在matlab的command window中输⼊mex -setup,选择合适的编译器,具体如下:上图最后的“y”是⾃⼰⼿动输⼊进去的,表⽰同意选择编译⽅式。
(4)输⼊“2”作为编译环境确认,输⼊“y”结果图如下;(5)在matlab的command window中输⼊make,如果正确的话,会如下所⽰:同时,可以看到在当前⽬录下⽣成下图中的⽂件特别是⽣成train.mexw32和predict.mexw32.到这⼀步,Liblinear安装成功。
3 在matlab中测试Liblinear是否能⽤model = train(svm_category', sparseTrainMatrix)[output_label, accuracy] = predict(svm_category', sparseTestMatrix, model);train中参数:svm_category'为列向量,表⽰training set的class label,假设为n维sparseTrainMatrix为n*m维矩阵,n表⽰training set中样本的个数,m表⽰每个样本中feature的个数model的内容为predict中参数和train中取的类似,本例中直接把training set作为testing set重新预测了⼀下,model为train中输出的结构体output_label输出的是testing set的class label的预测值accuracy是预测准确度到此结束。
前段时间,gyp326曾在论坛里问libsvm如何在matlab中使用,我还奇怪,认为libsvm是C 的程序,应该不能。
没想到今天又有人问道,难道matlab真的能运行libsvm。
我到官方网站看了下,原来,真的提供了matlab的使用接口。
接口下载在:.tw/~cjlin/libsvm/index.html#matlab具体使用方法zip文件里有readme说明,我也按照说明尝试的试用了一下,方法介绍如下。
使用的接口版本:MATLABA simple MATLAB interfaceLIBSVM authors at National Taiwan University.2.89 .tw/~cjlin/libsvm/matlab/libsvm-mat-2.89-3.zip使用的运行环境为:matlab 7.0,VC++ 6.0,XP系统。
按照说明使用方法如下:1. 下载下来的借口包里有svm的一些源文件,没有可执行的exe文件,所以,必须先将svmtrain等源文件编译为matlab可以使用的dll等文件。
于是先选择编译器,如下:(也可以先尝试使用我们在windows平台下编译好的文件,放在同一文件夹中直接使用:/bbs/viewthread.php?tid=538&page=1&fromuid=3#pid1154)>> mex -setupPlease choose your compiler for building external interface (MEX) files:Would you like mex to locate installed compilers [y]/n? ySelect a compiler:[1] Digital Visual Fortran version 6.0 in C:\Program Files\Microsoft Visual Studio[2] Lcc C version 2.4 in D:\MATLAB7\sys\lcc[3] Microsoft Visual C/C++ version 6.0 in D:\Program Files\Microsoft Visual Studio[0] NoneCompiler: 3Please verify your choices:Compiler: Microsoft Visual C/C++ 6.0Location: D:\Program Files\Microsoft Visual StudioAre these correct?([y]/n): yTry to update options file: C:\Documents and Settings\jink2005.AISEMINA-D6623E\Application Data\MathWorks\MATLAB\R14\mexopts.batFrom template: D:\MATLAB7\BIN\WIN32\mexopts\msvc60opts.batDone . . .我选择使用VC 6.0,其他可能不行。
matlab中SVM工具箱的使用方法1,下载SVM工具箱:2,安装到matlab文件夹中1)将下载的SVM工具箱的文件夹放在\matlab71\toolbox\下2)打开matlab->File->Set Path中添加SVM工具箱的文件夹现在,就成功的添加成功了.可以测试一下:在matlab中输入which svcoutput 回车,如果可以正确显示路径,就证明添加成功了,例如:C:\Program Files\MATLAB71\toolbox\svm\svcoutput.m 3,用SVM做分类的使用方法1)在matlab中输入必要的参数:X,Y,ker,C,p1,p2我做的测试中取的数据为:N = 50;n=2*N;randn('state',6);x1 = randn(2,N)y1 = ones(1,N);x2 = 5+randn(2,N);y2 = -ones(1,N);figure;plot(x1(1,:),x1(2,:),'bx',x2(1,:),x2(2,:),'k.');axis([-3 8 -3 8]);title('C-SVC')hold on;X1 = [x1,x2];Y1 = [y1,y2];X=X1';Y=Y1';其中,X是100*2的矩阵,Y是100*1的矩阵C=Inf;ker='linear';global p1 p2p1=3;p2=1;然后,在matlab中输入:[nsv alpha bias] = svc(X,Y,ker,C),回车之后,会显示:Support Vector Classification_____________________________Constructing ...Optimising ...Execution time: 1.9 secondsStatus : OPTIMAL_SOLUTION|w0|^2 : 0.418414Margin : 3.091912Sum alpha : 0.418414Support Vectors : 3 (3.0%)nsv =3alpha =0.00000.00000.00000.00000.00002)输入预测函数,可以得到与预想的分类结果进行比较.输入:predictedY = svcoutput(X,Y,X,ker,alpha,bias),回车后得到:predictedY =1111111113)画图输入:svcplot(X,Y,ker,alpha,bias),回车#Matlab一、因为要用到SVM,所以想先在matlab下学习一下,简短讲添加工具箱很简单:1.1:如果是Matlab安装光盘上的工具箱,重新执行安装程序,选中即可。
libsvm安装教程(详细版)(本机matlab版本16b)第一步,把libsvm放到工具箱toolbox中。
把libsvm安装包解压,并放入matlab程序文件中toolbox中。
运行matlab程序,点击主页,找到布局旁边的设置路径,并点击设计路径选择添加并包含子文件,找到toolbox下面的libsvm添加即可,并点击保存。
第二步更新工具箱找到布局旁边的预测按钮,并点击预设按钮。
找到常规,选择更新工具箱路径缓存,并点击应用,最后点击确定。
第三步,更改libsvm文件在matlab文件行,打开如下地址:D:\B\toolbox\libsvm-3.24\matlab打开make.m文件,将make.m中的CFLAGS改为COMPFLAGS。
注:因为matlab中有自带的svm,为了防止libsvm和自带的svm发生冲突,所以将D:\B\toolbox\libsvm-3.24\matlab中将svmtrian.c和svmpredic.c前面加入lib,相应的make.m文件中也做修改第四步,安装编译器编译器采用最新版tdm64-gcc-9.2.0,安装教程很简单选择Creat,保存路径直接选择C盘即可,C:\TDM-GCC-64。
第五步,使用matlab读取C语言程序。
Matlab文件行调整到此目录下D:\B\toolbox\libsvm-3.24\matlab 并在命令行窗口输入:setenv('MW_MINGW64_LOC','C:\TDM-GCC-64')make点击回车,当命令行窗口出现:使用'MinGW64 Compiler (C)' 编译。
MEX 已成功完成。
使用'MinGW64 Compiler (C)' 编译。
MEX 已成功完成。
使用'MinGW64 Compiler (C)' 编译。
MEX 已成功完成。
再论Matlab的libsvm的安装之所以要把这个无聊的问题再次发帖,因为我怕以后我会忘记,我可以来论坛寻找,也因为这是使用libsvm的第一步(我在网上找了很久没有发现)最关键的是compilers的选择(对于把Microsoft visual stdio 2005或者其他的编译器安装在自定义目录下的这一步非常关键)以下是步骤:>> mex -setup % 这是必须的Please choose your compiler for building external interface (MEX) files:Would you like mex to locate installed compilers [y]/n? n%这次是选择编译器,输入n,因为你的是自定义的%出现下面的选项:Select a compiler:[1] Borland C++ Compiler (free command line tools) 5.5[2] Borland C++Builder 6.0[3] Borland C++Builder 5.0[4] Compaq Visual Fortran 6.1[5] Compaq Visual Fortran 6.6[6] Intel C++ 9.1 (with Microsoft Visual C++ 2005 linker)[7] Intel Visual Fortran 9.1 (with Microsoft Visual C++ 2005 linker)[8] Intel Visual Fortran 9.0 (with Microsoft Visual C++ 2005 linker)[9] Intel Visual Fortran 9.0 (with Microsoft Visual C++ .NET 2003 linker)[10] Lcc-win32 C 2.4.1[11] Microsoft Visual C++ 6.0[12] Microsoft Visual C++ .NET 2003[13] Microsoft Visual C++ 2005[14] Microsoft Visual C++ 2005 Express Edition[15] Open WATCOM C++ 1.3[0] NoneCompiler: 13%这次选择13,或许你也可以用其他的The default location for Microsoft Visual C++ 2005 compilers is C:\Program Files\Microsoft Visual Studio 8,but that directory does not exist on this machine.Use C:\Program Files\Microsoft Visual Studio 8 anyway [y]/n? n%这次它说要使用默认的路径继续选择nPlease enter the location of your compiler: [C:\Program Files\Microsoft Visual Studio 8] %它的意思是让你输入编译器的位置,输入:D:\Program Files\Microsoft Visual Studio 8% 下面就是确认了Please verify your choices:Compiler: Microsoft Visual C++ 2005Location: D:\Program Files\Microsoft Visual Studio 8Are these correct?([y]/n): y*************************************************************************** Warning: MEX-files generated using Microsoft Visual C++ 2005 requirethat Microsoft Visual Studio 2005 run-time libraries beavailable on the computer they are run on.If you plan to redistribute your MEX-files to other MA TLABusers, be sure that they have the run-time libraries.You can find more information about this at:/support/solutions/data/1-2223MW.html***************************************************************************Trying to update options file: C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2007a\mexopts.batFrom template: D:\PROGRA~2\MA TLAB\R2007a\bin\win32\mexopts\msvc80opts.batDone . . . % ok,done!>> make>>%至此彻底完成,%以下是测试>>load heart_scale.mat>>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); %Accuracy = 86.6667% (234/270) (classification)% done。
libSVM安装过程及错误提示libSVM是用C++语言编写而成的,它提供了和其它软件诸如Matlab的接口,所以如果想要在Matlab中使用,首先要在Matlab中对C文件进行混合编译,把C文件转换为Matlab可以执行的.dll文件。
Matlab程序是一种解释执行程序,不用编译等预处理,程序运行速度较慢。
C/C++语言是高级程序设计语言之一,它可对操作系统和应用程序以及硬件进行直接操作,用C/C++语言明显优于其它解释型高级语言,一些大型应用软件如Matlab 就是用C语言开发的。
通过把耗时长的函数用c语言实现,并编译成mex 函数可以加快执行速度。
Matlab调用C/C++的方式主要有两种:利用MEX技术和调用C/C++动态连接库。
libSVM在Matlab中的安装采用的是第一种方式。
在Matlab与C/C++混合编程之前,必须先对Matlab的编译应用程序mex和编译器mbuild进行正确的设置:系统XP,Matlab版本2013a,C编译器为VS2010.1. 下载libSVM下载链接:D:\Program Files\matlab 2013a\toolbox\libsvm-3.18\matlab下载好保存到合适的路径,推荐Matlab安装目录下的toolbox中2. 解压文件3. 将libSVM所在的文件夹加入Matlab的搜索路径,在菜单栏的Set Path中可以设置。
Matlab执行程序时,如果在当前路径下没有找到所需的文件,会在搜索路径中继续寻找,所以要确保要使用的文件至少在搜索路径中。
如果Matlab 提示找不到文件,而文件又真是存在,很可能的原因是忘记将文件所在目录添加到Matlab的搜索路径下了。
4. 设置mex,这里要先将Matlab的当前目录切换到libsvm安装目录下的matlab子文件夹上。
这一步在mex的设置时并不是必须的,而是在后面的步骤时必须的,但是为了防止后面忘记,所以这里设置完搜索路径顺便设置当前目录。
matlab下安装libsvm遇到的问题最近在matlab下装libsvm工具箱,遇到许多问题,总结一下,希望对大家有帮助。
首先,具体的安装步骤在/thread-18080-1-1.html上有详细的说明,在此表示感谢!但是在安装过程中还是出现很多问题。
首先要说一下,我的操作系统是win7旗舰版64位的,之前安装过VS2010,matlab装的是2008a,可是在安装libsvm工具箱的时候错误一堆。
碰到的错误有:1.在用编译器对libsvm进行编译的时候(第二步)报错;2.输入make后,报错:说找不到E:\什么什么文件;3.测试libsvm是否安装成功的时候报错:??? Error using ==> loadNumber of columns on line 1 of ASCII file C:\ProgramFiles\MATLAB\R2011a\toolbox\libsvm-3.1\heart_scalemust be the same as previous lines.后来弄了很多方法,都不成功。
最后,我看到libsvm网站上解释了64位机器下的问题,解决方法:首先卸载VS2010,可能我之前安装的时候有什么地方没有注意到,导致编译器出问题。
后来看到matlab网站上说要是安装VS2010的话,在安装的时候要选择“X64 Compilers and Tool s ”,这选项在安装的时候默认是不选的。
但是我后来安装的是VC++ 2010 Express和Windows Software Development Kit (SDK) 7.1 。
matlab网站上说着两个是必须要安装的(针对64位机器,其实32位装VC++ 6.0就可以了)。
然后我又把matlab卸载了,安装了matlab 2011a(这个纯属自己的问题,反正都要重新弄一遍,索性装个新的,O(∩_∩)O~)。
再按照网上的安装教程一步一步安装。
Matlab 2019a Libsvm3.23 MW_MINGW64_6.3环境建立指南
安装libsvm过程很漫长,虽然参考了网上各种指南,发现在国内的网络下安装MW_MINGW64太痛苦了。
这里总结下,供大家参考
本人PC系统Windows7 64bit,matlab安装的2019a,libsvm安装的version3.23
1.首先需要下载libsvm包:
2.将libsvm
3.23解压到matlab/toolbox目录下:
3.运行matlab,在主页(home)的设置路径(set path)中添加libsvm及子文件夹:
4.将当前路径设置到libsvm 3.2.2/matlab 后,
在命令行窗口运行mex -setup
5.如果提示找不到编译器,请安装MinGW64 Compiler (C++),注意:必须
6.3版本,
其他都有问题。
6.配置环境变量:从我的电脑属性-高级系统设置-高级-环境变量中,添加到系统变量(大
部分配置环境变量都是如此)。
变量为:MW_MINGW64_LOC,值为:MinGW63的位置。
7.在MATLAB命令行内运行命令setenv('MW_MINGW64_LOC',folder),MinGW63的位置,
要加单引号。
例如:setenv('MW_MINGW64_LOC','C:\mingw63')
8.此时mex –setup C++ 可以正常使用,不然重启matlab即可。
MEX 配置为使用'MinGW64 Compiler (C++)' 以进行C++ 语言编译。
警告: MATLAB C 和Fortran API 已更改,现可支持
包含2^32-1 个以上元素的MATLAB 变量。
您需要
更新代码以利用新的API。
您可以在以下网址找到更多的相关信息:
9.出现如上内容,再对C语言文件进行编译,编译为matlab能够识别的文件,在命令行
窗口输入编译命令: make
显示上图表示成功
10.如果错误提示:
使用'MinGW64 Compiler (C)' 编译。
Error: D:\matlab2016b\toolbox\libsvm-3.22\matlab\make.m failed (line 13)
gcc: error: \-fexceptions: No such file or directory
=> Please check README for detailed instructions.
需要打开libsvm3.2.2/matlab目录下的make.m,将其中所的CFLAGS替换为COMPFLAGS(替换运用CTRL+F即可),替换后,重启matlab,执行make则可以编译成功。
以上命令,每次打开matlab都需要,因此可以建立startup.m,这样每次打开matlab,可以自动执行。
可以在C:\Program Files\Polyspace\R2019a\bin下建立startup.m文件。
startup.m。