Matlab安装使用libsvm
Matlab下libsvm的配置使用【转】
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。
matlab中使用libsvm的使用方法
前段时间,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,其他可能不行。
LibLinear(SVM包)的MATLAB安装
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是预测准确度到此结束。
Libsvm配置教程
Libsvm配置教程一、安装1.下载:小编系统是Windows10 64位,Matlab版本是2016a,Visual Studio版本是2 013,Libsvm版本是Libsvm- 3.22。
Libsvm库下载:.tw/~cjlin /libsvm/详解:/thread-11925-1-1.html。
2.编译:如果你使用的是64位的操作的系统和Matlab,那么不需要进行编译步骤,因为自带软件包中已经包含有64位编译好的版本:libsvmread.mexw64、libsvmwrite.mexw64、svmtrain.mexw64、svmpredict.mexw64。
否则,需要自己编译二进制文件。
目的:将libsvm-3.11\matlab中libsvmwrite.c等C++文件编译成 libsvmread.mexw32 等matlab文件,这样就可以在command window中被直接调用了。
首先在Mtlab中进入LIBSVM根目录下的Matlab目录(如C:\libsvm-3.17\matlab),在命令窗口输入:Mex –setup(注意中间有空格!)点击选择C++;命令行输入:make(注意,Matlab或VC版本过低可能会导致编译失败,建议使用最新的版本。
)编译成功后,当前目录下会出现若干个后缀为mexw64(64位系统)或mexw32(32位系统)的文件。
同时,可以看到在当前目录下生成类似下图中的文件。
对应的train.mexw32和predict.mexw32是svmtrain.mexw32和svmpredict.mexw32到这一步,Libsvm安装成功。
3. 重命名(可选,但建议执行)编译完成后,在当前目录下回出现svmtrain.mexw64、svmpredict.mexw64(64位系统)或者svmtrain.mexw32、svmpredict.mexw32(32位系统)这两个文件,把文件名svmtrain 和svmpredict相应改成libsvmtrain和libsvmpredict。
libsvm安装教程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 已成功完成。
matlab2019a加装libsvm指南
Matlab 2019a Libsvm3.23 MW_MINGW64_6.3环境建立指南安装libsvm过程很漫长,虽然参考了网上各种指南,发现在国内的网络下安装MW_MINGW64太痛苦了。
这里总结下,供大家参考本人PC系统Windows7 64bit,matlab安装的2019a,libsvm安装的version3.231.首先需要下载libsvm包:2.将libsvm3.23解压到matlab/toolbox目录下:3.运行matlab,在主页(home)的设置路径(set path)中添加libsvm及子文件夹:4.将当前路径设置到libsvm 3.2.2/matlab 后,在命令行窗口运行mex -setup5.如果提示找不到编译器,请安装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)' 编译。
SVM多分类问题libsvm在matlab中的应用
SVM多分类问题libsvm在matlab中的应⽤转载⾃对于⽀持向量机,其是⼀个⼆类分类器,但是对于多分类,SVM也可以实现。
主要⽅法就是训练多个⼆类分类器。
⼀、多分类⽅式1、⼀对所有(One-Versus-All OVA)给定m个类,需要训练m个⼆类分类器。
其中的分类器 i 是将 i 类数据设置为类1(正类),其它所有m-1个i类以外的类共同设置为类2(负类),这样,针对每⼀个类都需要训练⼀个⼆类分类器,最后,我们⼀共有 m 个分类器。
对于⼀个需要分类的数据 x,将使⽤投票的⽅式来确定x的类别。
⽐如分类器 i 对数据 x 进⾏预测,如果获得的是正类结果,就说明⽤分类器 i 对 x 进⾏分类的结果是: x 属于 i 类,那么,类i获得⼀票。
如果获得的是负类结果,那说明 x 属于 i 类以外的其他类,那么,除 i 以外的每个类都获得⼀票。
最后统计得票最多的类,将是x的类属性。
2、所有对所有(All-Versus-All AVA)给定m个类,对m个类中的每两个类都训练⼀个分类器,总共的⼆类分类器个数为 m(m-1)/2 .⽐如有三个类,1,2,3,那么需要有三个分类器,分别是针对:1和2类,1和3类,2和3类。
对于⼀个需要分类的数据x,它需要经过所有分类器的预测,也同样使⽤投票的⽅式来决定x最终的类属性。
但是,此⽅法与”⼀对所有”⽅法相⽐,需要的分类器较多,并且因为在分类预测时,可能存在多个类票数相同的情况,从⽽使得数据x属于多个类别,影响分类精度。
对于多分类在matlab中的实现来说,matlab⾃带的svm分类函数只能使⽤函数实现⼆分类,多分类问题不能直接解决,需要根据上⾯提到的多分类的⽅法,⾃⼰实现。
虽然matlab⾃带的函数不能直接解决多酚类问题,但是我们可以应⽤libsvm⼯具包。
libsvm⼯具包采⽤第⼆种“多对多”的⽅法来直接实现多分类,可以解决的分类问题(包括C- SVC、n - SVC )、回归问题(包括e - SVR、n - SVR )以及分布估计(one-class-SVM )等,并提供了线性、多项式、径向基和S形函数四种常⽤的核函数供选择。
论Matlab的libsvm的安装
再论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的matlab代码
尊敬的读者,今天我将向大家介绍libsvm在Matlab中的代码实现。
libsvm是一个非常流行的用于支持向量机(SVM)的软件包,它具有训练和预测的功能,并且支持多种核函数。
而Matlab作为一种强大的科学计算环境,也提供了丰富的工具和函数库来支持机器学习和模式识别的应用。
将libsvm与Matlab结合起来,可以实现更加高效和便捷的SVM模型训练和预测。
1. 安装libsvm我们需要在Matlab中安装libsvm。
你可以在libsvm的官方全球信息湾上下载最新版本的libsvm,并按照官方指引进行安装。
安装完成后,你需要将libsvm的路径添加到Matlab的搜索路径中,这样Matlab才能够找到libsvm的函数和工具。
2. 数据准备在使用libsvm进行SVM模型训练之前,我们首先需要准备好训练数据。
通常情况下,训练数据是一个包含特征和标签的数据集,特征用来描述样本的属性,标签用来表示样本的类别。
在Matlab中,我们可以使用矩阵来表示数据集,其中每一行代表一个样本,每一列代表一个特征。
假设我们的训练数据保存在一个名为"train_data.mat"的文件中,可以使用以下代码加载数据:```matlabload train_data.mat;```3. 数据预处理在加载数据之后,我们可能需要对数据进行一些预处理操作,例如特征缩放、特征选择、数据平衡等。
这些步骤可以帮助我们提高SVM模型的性能和泛化能力。
4. 模型训练接下来,我们可以使用libsvm在Matlab中进行SVM模型的训练。
我们需要将训练数据转换成libsvm所需的格式,即稀疏矩阵和标签向量。
我们可以使用libsvm提供的函数来进行模型训练。
下面是一个简单的示例:```matlabmodel = svmtrain(label, sparse(train_data), '-s 0 -t 2 -c 1 -g0.07');```上面的代码中,label是训练数据的标签向量,train_data是训练数据的稀疏矩阵,'-s 0 -t 2 -c 1 -g 0.07'是SVM训练的参数设置,具体含义可以参考libsvm的官方文档。
如何使用MATLAB-LIBSVM
如何使用matlab-libsvm测试数据?首先需要声明的是,本文是根据MA TLAB技术论坛的视频Libsvm的下载、安装和使用(《Learn SVM Step by Step》by faruto2),自己经过实践后做的一个总结,希望对需要的人有用!1、Libsvm官方提供的测试数据(原始数据格式是给libsvmC++版本使用,在MA TLAB平台下需要使用libsvmread进行格式转换):.tw/~cjlin/libsvmtools/datasets/以breast-cancer_scale数据集为例,下面介绍具体操作,操作之前必须保证打开的MA TLAB环境下,当前目录是…\libsvm-3.1-[FarutoUltimate3.1Mcode]\matlab即下图所示:然后输入下面代码:[label_vector,instance_matrix]=libsvmread(‘breast-cancer_scale.txt’)model=svmtrain(label_vector,instance_matrix)[plabel,accuracy]=svmpredict(label_vector,instance_matrix,model)2、UCI数据库:/ml/datasets.html下面以wine_data数据集为例,介绍具体操作:先将下载好的wine.data数据集放在…\libsvm-3.1-[FarutoUltimate3.1Mcode]\matlab文件夹下面,必须保证打开的MA TLAB环境下,当前目录如下图所示:然后在打开的MA TLAB环境下,File->Import Data…->文件类型(all files)->选择wine.data,接下来输入下面代码:wine_label=wine(:,1)结果如图所示wine_data=wine(:,2:end)结果如图所示savewinedata.mat结果如图所示loadwinedata结果如图所示modelw=svmtrain(wine_label,wine_data)结果如图所示[plabelw,accuracyw]=svmpredict(wine_label,wine_data,modelw) 结果如图所示。
libsvm的安装使用操作手册
Libsvm工具箱和Lssvm工具箱是svm实现中比较不错的两个工具箱,/soft/59793.html libsvm工具箱官网下载/f/19658075.html新浪也有对应的下载,但是版本不同,都可以用。
下载下来的Libsvm都有如下内容:从3.1版本开始,官方将matlab平台、java平台、python平台以及C++平台整合到一个文件夹下,下载这一个文件夹可以在以上平台上使用。
其中matlab平台上有如下内容:其中svmtrain.c和svmpredict.c是核心函数。
Matlab平台下的libsvm的安装过程如下:以下是将Libsvm工具箱所在的文件夹添加到matlab工作搜索目录(路径):——File——Setpath——Add with Subfoders。
对应的界面的截图如图所示:选择刚才下载的工具箱的文件夹。
这里需要解释下的是,我们刚才选择的是Add with Subfolders而不是Add folder原因是Add with Subfolders可以将文件夹下的子文件夹都添加在其中,而Add Folder不能添加子文件夹。
之后可以看到我们已经将libsvm的文件夹以及它的子文件夹都添加到了matlab的Set Path中。
接着点击按钮,然后点击按钮关闭窗口,接下来就可以在setpath中看到对应的文件夹(路径)了。
在Current Directory就是当前目录,将当前目录调整到放libsvm工具箱的子目录中。
如图所示:点击浏览按钮,选择相应的文件夹即可。
我们可以用“mex –set up”这个命令来进行选择编译器:在Command Window中键入该命令,会询问我们是否需要确认已经安装的编译器:我们选择y,在我的机器上会出现如下结果:在这里显示的是我安装了三种编译器。
我们选择第三个编译器,在窗口中输入3,。
libsvm参数说明
libsvm参数说明摘要:一、libsvm 简介1.libsvm 的作用2.libsvm 的安装和使用二、libsvm 参数说明1.核函数选择2.C 参数调整3.罚参数选择4.迭代次数选择5.其他参数三、libsvm 参数调整策略1.交叉验证2.网格搜索3.启发式方法四、libsvm 在实际应用中的案例分析1.情感分析2.文本分类3.图像分类正文:一、libsvm 简介libsvm 是一款常用的支持向量机(SVM)开源实现库,它提供了C、Python、Java 等语言的接口,方便用户在不同平台上进行使用。
libsvm 具有较高的效率和准确性,被广泛应用于数据挖掘、机器学习、模式识别等领域。
1.libsvm 的作用libsvm 主要作用是实现支持向量机算法,它可以解决分类和回归问题,包括线性分类和非线性分类。
此外,libsvm 还提供了核函数,使得它可以处理高维数据和复杂数据的分类问题。
2.libsvm 的安装和使用libsvm 的安装过程比较简单,只需要按照官方文档的指导进行操作即可。
安装完成后,可以通过调用libsvm 提供的API 进行模型的训练和预测。
二、libsvm 参数说明libsvm 提供了丰富的参数供用户调整,以达到最佳的效果。
1.核函数选择核函数是libsvm 的重要组成部分,它决定了libsvm 如何处理输入数据。
libsvm 提供了多种核函数,如线性核、多项式核、径向基函数核等。
用户可以根据问题的特点选择合适的核函数。
2.C 参数调整C 参数是libsvm 中的一个重要参数,它控制了模型的软约束程度。
较小的C 值会使得模型更加灵活,可能导致过拟合;较大的C 值会使得模型更加严格,可能导致欠拟合。
因此,合理调整C 参数对于模型的性能至关重要。
3.罚参数选择罚参数是libsvm 中的另一个重要参数,它控制了模型对训练数据的惩罚程度。
较小的罚参数会导致模型对训练数据的拟合程度过高,可能会导致过拟合;较大的罚参数会使得模型对训练数据的拟合程度降低,可能会导致欠拟合。
matlab下的LIBSVM的使用
执行文件,还提供了源代码,方便改进、修改以及 在其它操作系统上应用 – 且对SVM所涉及的参数调节相对比较少,提供了很 多的默认参数,利用这些默认参数可以解决很多问 题 – 并提供了交互检验(Cross Validation)的功能
Company Logo
该软件包可在 .tw/~cjlin/ 免费获得。 该软件可以解决C-SVM、ν-SVM、ε-SVR和 ν-SVR等问题,包括基于一对一算法的多类模 式识别问题。
Company Logo
使用
参数设置 主要函数
Company Logo
主要参数设置
-s(默认0)——SVM类型选择
– 0--CSVC – – – –
(分类问题) 1--nu-SVC (分类问题,引入一个新的参数nu) 2--one-class SVM(做分布估计) 3--epsilon-SVR (回归问题) 4--nu-SVR
Company Logo
安装
下载之后设置路径
– FILE——Set Path——Add with subfoders——选择所在
文件夹
Company Logo
选择编译器
libsvm的原始版本使用C++写的,为了在 matlab平台下使用,需要用C++编译器编译, 生成类似于.m文件的.mexw32文件。 这里要说明matlab自带一个C编译器 Lcc_win32C,但此处需要C++编译器。 matlab支持的编译器列表: /support/compi lers/R2011a/win32.html
Company Logo
测试数据及格式
测试数据集
– libsvm官方提供的测试数据格式是C++版本使用
LibSVM在matlab中的使用
LibSVM 在matlab 中的使⽤搞了⼀天,看了很多资料,终于搞好了matlab 中调⽤⼤⽜写好的svm 库,将结果告诉⼤家避免以后⾛弯路。
1. 参考⽹站:2. 操作流程:请注意:详细操作流程请参考上⾯的“详解”⽹站,这⾥只说⼤框架和详解⾥没有提到的问题。
A.设置pathFile->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.加载数据集就是这⾥搞了我⼀下午!加载数据集有两个数据集,⼀个是C++的, ⼀个是matlab 的。
libsvm 库中下载的是C++数据,所以matlab 加载我们下载的heart_scale 是会报错的:<这就是视频中遗漏的⼩问题>这时怎么办?法2、⽤libsvmread ⽽⾮load ,就是这⾥这样就可以加载数据集了,完成该步骤后发现Workspace 中出现了heart_scale_inst 和 heart_scale_label,说明正确。
ok ,下⼀步我们来测试svm 的训练和predictD.train & predict可以看到结果:=========================MAC 版如何在matlab 中使⽤libsvm=========================下⾯说下mac 怎么⽤libsvm ,这⾥的问题是mex -setup 的问题,需要安装⼀个补丁。
MATLAB安装使用libsvm详细步骤
MATLAB安装使⽤libsvm详细步骤根据本⽂后⾯部分博友提出的在配置过程中出现的问题,其中需要特别强调的⼀点:整个过程,都是在 libsvm-3.12\matlab⽬录下操作的。
如果这⼀点你忽视了,你不可能解决配置中报的Bug,即使重新安装matlab也不⾏。
本⽂的配置路径为 D:\MATLAB\R2010a\toolbox\libsvm-3.12\matlab,从始⾄终都是在这个⽬录下进⾏的。
当然,你也可以将编译好的⽂件拷贝到任何地⽅,只要你当前的⼯作⽬录中有这四个⽂件即可。
////////////////////////////详细步骤如下:1.下载libsvm.tw/~cjlin/libsvm/我的matlab版本 R2010a,我的libsvm版本3.122.解压⾄指定⽬录将libsvm解压⾄D:\MATLAB\R2010a\toolbox下,你也可以解压⾄你喜欢的地⽅。
3.设置路径下载下来的借⼝包⾥有svm的⼀些源⽂件,没有可执⾏的exe⽂件,所以,必须先将svmtrain等源⽂件编译为matlab可以使⽤的dll等⽂件。
于是先选择编译器,如下:4.编译libsvm我的编译器是VC++ 6.0⾸先在matlab设置当前⽬录为 D:\MATLAB\R2010a\toolbox\libsvm-3.12\matlab5.执⾏编译在matlab命令窗⼝中输⼊mex -setup显⽰Please choose your compiler for building external interface (MEX) files:Would you like mex to locate installed compilers [y]/n?输⼊ySelect a compiler:[1] Lcc-win32 C 2.4.1 in D:\MATLAB\R2010a\sys\lcc[2] Microsoft Visual C++ 2008 SP1 in D:\Program Files\Microsoft Visual Studio 9.0[3] Microsoft Visual C++ 6.0 in D:\Program Files\Microsoft Visual Studio[0] NoneCompiler:需要你选择编译器我输⼊的是3 即选择VC++ 6.0Please verify your choices:Compiler: Microsoft Visual C++ 6.0Location: D:\Program Files\Microsoft Visual StudioAre these correct [y]/n?再次确认⾃⼰的选择,输⼊yTrying to update options file: C:\Users\DELL\AppData\Roaming\MathWorks\MATLAB\R2010a\mexopts.batFrom template: D:\MATLAB\R2010a\bin\win32\mexopts\msvc60opts.batDone . . .编译器选择好了之后,⽤make.m编译命令窗⼝输⼊make可以看到新编译出4个⽂件libsvmread.mexw32,libsvmwrite.mexw32,svmtrain.mexw32,svmpredict.mexw32在命令窗⼝中输⼊load heart_scale;此时需注意,libsvm 3.12中提供的是c++版本的数据集heart_scale,这⾥需要加载matlab版本的数据集。
LIBSVM(一)安装及容易遇到的问题
登录后才能查看或发表评论立即登录或者逛逛博客园首页
LIBSVM( 一 ) 安 装 及 容 易 遇 到 的 问 题
1.下载libsvm-3.23
2.安装
2.1 解压,将解压后的文件放到MATLAB安装目录的toolbox
2.2 set path 至 D:\software\matlab\toolbox\libsvm-3.23
2.3 工作目录调整至 D:\software\matlab\toolbox\libsvm-3.23\matlab
3.编译
3.1 mex -setup
(易错:Matlab 未找到支持的编译器或 SDK 解决方法归纳
4. 测试
4.2 指令
% load heart_scale.mat; % model = svmtrain(heart_scale_label,heart_scale_inst); % [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model);
% 预测测试集合标签 [ptest,acctest] = svmpredict(testlabel,testdata,model); % 预测精度 [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model);
load heart_scale.mat; data = heart_scale_inst; label = heart_scale_label;
% 选取前200个数据作为训练集合,后70个数据作为测试集合 ind = 200; traindata = data(1:ind,:); trainlabel = label(1:ind,:); testdata = data(ind+1:end,:); testlabel = label(ind+1:end,:);
libsvm-mat在MATLAB平台下的安装
libsvm-mat在MATLAB平台下的安装安装libsvm-mat是在MATLAB平台下使用libsvm的前提,如果没有安装好也就无法使用,在MATLAB平台下安装libsvm-mat一般有以下几个大步骤:前提:已经有好libsvm-mat包。
1.将libsvm-mat所在工具箱添加到matlab工作搜索目录(File ——》Set Path… ——》Add with Subfolders...);2.选择编译器(mex -setup)推荐使用Microsoft Visual C++ 6.0编译器或者更高版本的visual studio,一般MATLAB会自带一个编译器Lcc-win32 C 但这个在这里无法使用!因为libsvm源代码使用c++写的,而Lcc-win32 C是一个c编译器,无法编译c++源代码!下面具体说说如何选择编译器。
首先在MATLAB命令窗【Commond Window】中输入:1.mex -setupRemark : 注意mex后面要打一个空格然后是-setup。
千万别忘记打一个空格,发现好多朋友在mex和-setup之间没有打空格!!会出现类似如下内容:1.Please choose your compiler for building external interface (MEX) files:2.Would you like mex to locate installed compilers [y]/n?问你是否locate本机安装的编译器,正规的选择y然后指定编译器即可,先来看一下选择y (选择n在后面说):根据你本机安装的编译器,会出现类似如下内容:1.Please choose your compiler for building external interface (MEX) files:2.Would you like mex to locate installed compilers [y]/n? y3.Select a compiler:4.[1] Lcc-win32 C 2.4.1 in D:\MATLAB~1\sys\lcc5.[2] Microsoft Visual C++6.0 in D:\Microsoft Visual Studio6.7.[0] None8.piler:然后你选择相应的编译器并确认即可:piler: 22.3.Please verify your choices:4.piler: Microsoft Visual C++6.06.Location: D:\Microsoft Visual Studio7.8.Are these correct [y]/n? y9.10.Trying to update options file:C:\Users\faruto\AppData\Roaming\MathWorks\MATLAB\R2009b\mexopts.bat11.From template: D:\MATLAB~1\bin\win32\mexopts\msvc60opts.bat12.13.Done . . .这样就表示编译器选择成功了(此步骤中可能会出现warning警告是正常现象,不用管的说~)。
libsvm安装过程及错误提示
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的设置时并不是必须的,而是在后面的步骤时必须的,但是为了防止后面忘记,所以这里设置完搜索路径顺便设置当前目录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Would you like mex to locate installed compilers [y]/n?n %这次是选择编译器,输入n,选择自定义的编译器
出现以下选项(因电脑而异)
Select a compiler:
[1] Intel C++ 11.1 (with Microsoft Visual C++ 2008 SP1 linker)
Accuracy = 86.6667% (234/270) (classification)% done
如果运行正常并生成了model这个结构体(其中保存了所有的支持向量及其系数),那么说明 libsvm和matlab 之间的接口已经完全配置成功。
注意:
1. matlab自带了C编译器Lcc-win32C,但是libsvm原始版本是C++实现的,因此需要C++的编译器来编译,这就是不适用matlab默认编译器而选择其他C++编译器的原因。
[2] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 SP1 linker)
[3] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 Shell linker)
Matlab安装使用libsvm
一.下载libsvm
.tw/~cjlin/libsvm/
在libsvm的网站上下载 libsvm-3.12.zip文件,解压后放在任意目录下,最好放在MATLAB工具箱中,比如 C:\Program Files\MATLAB\R2011a\toolbox\libsvm-3.12下。
C:\Program Files\Microsoft Visual Studio 10.0. Do you want to use this compiler [y]/n?
编译器默认路径,确认正确输入y,更改路径,输入n
输入y出现再次确认
Please verify your choices:
nSV = 132, nBSV = 107
Total nSV = 132
>> [predict_label,accuracy] = svmpredict(heart_scale_label,heart_scale_inst,model);
Accuracy = 86.6667% (234/270) (classification)
Compiler: Microsoft Visual C++ 2010
Location: C:\Program Files\Microsoft Visual Studio 10.0
Are these correct [y]/n? y
编译器配置完成
Trying to update options file: C:\Documents and Settings\zhangduokun\Application Data\MathWorks\MATLAB\R2011a\mexopts.bat
二.配置编译器
打开 matlab,切换到C:\Program Files\MATLAB\R2011a\toolbox\libsvm-3.12\matlab目录下,键入以下命令:
mex –setup
出现提示语句
Please choose your compiler for building MEX-files:
From template: C:\PROGRA~1\MATLAB\R2011a\bin\win32\mexopts\msvc100opts.bat
Done . . .
三.编译
输入命令
>> make
>>
%编译完成
系统就会生成svmtrain.mexw32,svmpredict.mexw32,libsvmread.mexw32和libsvmwrite.mexw32等文件(对于 Matlab 7.1以下上版本,生成的对应文件为svmtrain.dll,svmpredict.dll和 read_sparse.dll,没做测试),然后可以在matlab的菜单 File->Set Path->add with subfolders(可直接用Add Folder)里,把 C:\Program Files\MATLAB\R2011a\toolbox\libsvm-3.12\matlab目录添加进去,这样以后在任何目录下都可以调用 libsvm的函数了。
matlab支持的编译器也是有限的,可以查看不同版本matlab支持的编译器列表
2. 如果matlab版本太低,如matlab 7.0是不能用VS作为编译器的,只能用VC++ 6.0
3. .mexw32 文件是经过加密的,打开是乱码,函数本身没有帮助。
例如输入 help svmpredict会出现报错: svmpredict not found
>>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); %
[9] Microsoft Visual C++ 2010 Express
[10] Open WATCOM C++
[0] None
Compiler: 8%可以用其他的,出现以下提示语句
Your machine has a Microsoft Visual C++ 2010 compiler located at
四.测试
为了检验 libsvm和 matlab之间的接口是否已经配置完成,可以在 matlab下执行以下命令:
>>load heart_scale
完成该步骤后发现Workspace中出现了heart_scale_inst和 heart_scale_label,说明正确
6.参考资料
libsvm库下载:.tw/~cjlin/libsvm/
视频:/v_showMini/id_XMjc2NTY3MzYw_ft_131.html(有小问题,等下会提到)
详解:/threadvm官网上提供了很多数据集
测试使用的heart_scale数据集是C++版本的(类标签 1:第一个属性 2:第二个属性…),可以用libsvmread来转换为matlab版本的(它们的区别在类标签)。
[label_vector, instance_matrix] = libsvmread(‘C++版本数据集’); %得到类标签和属性矩阵,然后可以使用它们训练了model = svmtrain(label_vector, instance_matrix);
[4] Lcc-win32 C 2.4.1
[5] Microsoft Visual C++ 6.0
[6] Microsoft Visual C++ 2005 SP1
[7] Microsoft Visual C++ 2008 SP1
[8] Microsoft Visual C++ 2010
>> load heart_scale
>> model = svmtrain(heart_scale_label,heart_scale_inst);
*
optimization finished, #iter = 162
nu = 0.431029
obj = -100.877288, rho = 0.424462
工具箱libsvm-3.12\matlab中README文件才是帮助文件。
但是输入help svmtrain会出现帮助信息,其实出现的是系统自带的svmtrain函数,没有libsvm工具箱中的好用。
4.在新版本libsvm3.12中,文件夹libsvm-3.12\windows中已经有编译好的程序,可以直接使用,只需要把libsvm-3.12\windows添加到matlab路径中即可,不需要编译的过程。当然最好还是自己编译一遍,因为编译环境不同会导致一些不可预估的小问题,自己编译的过程是可控的。