LIBsvm安装过程与错误提示.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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的设置时并不是必须的,而是在后面的步骤时必须的,但是为了防止后面忘记,所以这里设置完搜索路径顺便设置当前目录。 另外,现在的libsvm文件夹libsvm-3.12\windows中已经有编译好的程序,可以直接使用,只需要把libsvm-3.12\windows添加到matlab路径中即可,不需要编译的过程。但最好还是自己编译一遍,因为编译环境不同会导致一些不可预估的小问题,自己编译的过程是可控的。 在命令窗口输入mex –setup,注意mex后面有一个空格,也就是正确输入后setup的颜色会变,如果没有输入空格,setup颜色为黑色而且运行命令会有错误提示。 运行后出现下图的提示,是否选择Matlab自带的编译器,选择n。matlab自带了C编译器Lcc-win32C,但是libsvm原始版本是C++实现的,因此需要C++的编译器来编译,这就是不用matlab默认编译器而选择其他C++编译器的原因。 接下来会让选择使用哪种编译器,选择自己电脑上所带有的,这里使用的VS2010,第21号编译器。 是否确定这个编译器,核对位置后确定: 再次确定后出现编译完成的界面:   5. 用make.m编译。可以看到make文件就在libsvm中的matlab子文件夹里,这里直接输入函数名称,Matlab会首先在当前目录下搜索函数,如果当前目录没有,则会再在搜索路径中寻找,为了提高搜索速度,也为了防止其它同名文件的干扰,这里直接将我们所需的make文件所在的直接目录设为当前目录。 在命令窗口输入:make 6. 编译完成,系统会生成svmtrain.mexw32,svmpredict.mexw32,libsvmread.mexw32和libsvmwrite.mexw32等文件,现在就可以调用 libsvm的函数了。 7. 为了检验是否安装好,可用libsvm自带的测试数据进行测试。 首先读入测试数据,如果你有.mat后缀的Matlab数据集,把它拷贝到当前路径中可以直接用load读入即可。而libsvm中现在自带的heart_scale数据集是C++版本的(类标签 1:第一个属性 2:第二个属性…),不能直接load,需要用libsvmread来转换为matlab版本的(它们的区别在类标签)。下图是libsvm提供的heart_scale数据集,注意它的存放路径。 使用命令[label_vector, instance_matrix] = libsvmread(‘C++版本数据集’);来转换数据类型,出现下图error: 这里错误的原因是因为,当只给出文件名时,程序默认只在当前路径下寻找,而这里数据集并不在当前目录matlab子文件夹下,所以有两种解决办法,一种是将数据拷贝到当前目录中,依然使用这条命令;另一种方法是将路径明确化,不要只给出一个文件名,给出文件存

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档