记录在学习毫升过程中,在MATLAB中集成LibSVM时遇到的问题

,前几天写了一下自己对SVM中关键的距离问题的理解,后面会继续记录自己对该模型其他问题的理解,今天想试试SVM在“西瓜书”那个“阿尔法3.0”数据集上的效果。于是查到了“湾湾”教授林智仁先生大牛等写的一个开源包LibSVM,并且该库可以与很多平台兼容,有很多语言版本,支持java, c++, C、MATLAB等,我们可以在林教授主页上下载.LibSVM地址:http://www.csie.ntu.edu.tw/~ cjlin/LibSVM/Windows平台下载压缩压缩文件,Linux下则是tar.gz,新版的包为3. x。本人MATLAB开发平台的版本号为Windows下的R2016a,因此,记录R2016a集成该开源包的过程。

,首先,我搜到了faruto大佬在matlabsky发的一个关于该问题的帖子,于是就按照该帖子的叙述进行相关的操作,不过踩到了好几个坑,因为这个帖子是好久之前的,版本比较靠前,所以会有些细节上的不同,不过大致还是可以参考的。而且也有视频的讲解可以参考。

原贴地址:http://www.matlabsky.com/thread - 11925 - 1 - 1. - html

优酷视频:

步骤1:添加LibSVM的搜索目录(路径)

,点击主页选项卡下的“设置路径”按钮——祝辞点击“添加并包含子文件夹”——在点击“libsvm - 3.22”文件夹,选择所在的目录——在保存,关闭

步骤2:安装c++编译器

帖子中先是运行墨西哥人设置,按照提示进行选择,但是我在安装了VC6.0的前,后运行该命令都会报错:“未安装编译器或者SDK”,也就是安装了VC也找不到,我猜测可能是VC太旧,所以换了GCC,由于开发包是c++开发的,所以需要相关的编译器进行编译后,MATLAB才能够调用。由于新版本的MATLAB支持MinGW (GCC)编译器,而且相对比较小巧,故我选择了安装该编译器(也可以安装VS201X),安装路径最好是“X: \ tdm - GCC - 64”这种形式,“X”是盘符下载地址:http://tdm-gcc.tdragon.net/download,或者下载网盘数据,<强>链接:http://pan.baidu.com/s/1cMwao2 <强>密码:xh9u。安装完成后再运行命令”墨西哥人设置”,依然提示错误,该问题可能是GCC的道路上设置有问题,选择调用setenv (MW_MINGW64_LOC, 文件夹)函数进行设置,其中文件夹为GCC的路径,例如:setenv (“MW_MINGW64_LOC”,“D: \ tdm - GCC - 64”),运行该命令后再墨西哥人设置,好,可以!

步骤3:。m编译相关的c++文件(主要是训练和预测源文件)

紧随步骤2,选择当前目录为Libsvm,然后运行让脚本(当前目录设置为Libsvm是防止MATLAB中有与使同名的脚本),本以为已经成功集成,谁料依然出错”没有这样的文件或目录……”,实在是有一种他妈的狗的感觉,继续填坑,查阅其他博客,幸好有人遇到过同样的问题,让脚本文件中将配置MATLAB对应的代码行进行修改,具体将“CFLAGS”修改为“COMPFLAGS”可以用ctr + F然后点击全部替换可以更快。完成以上操作之后,再运行让脚本函数,成功运行,在当前文件夹(. ./Libsvm/MATLAB)中,会发现多了两个训练和预测的.obj文件这是编译之后的结果,表示成功。

目的:测试Libsvm环境

在libsvm2.x中,是有heart_scale.mat数据文件但是最新的libsvm3。x只有heart_scale纯文本文件,这是c++数据数据文件的格式,如果按照faruto视频中的操作,键入“负载heart_scale”命令,会发现,结果出的错,这是由于缺少对应的MATLAB的数据格式的文件,因此需要用libsvmread命令进行读入,该命令其实是运行一个lib中的libsvmread。c的c文件,用于对数据的转换,其调用格式为libsvmread(文件名),例如[label_vector instance_matrix]=libsvmread (heart_scale);此处用的当前路径,不知道可不可以用绝对路径,可以试试,应该是可以的。数据经过转换后,可以发现,多了两个数据,label_vector和实例,分别是样本标签和属性,有了数据,下面就对环境进行正式测试。调用模型=svmtrain (label_vector instance_matrix);生成训练模型后在调用svmpredict (label_vector instance_matrix,模型,“问”),得到结果。我用周教授《机器学习》上的西瓜数据集α3.0进行环境测试,得到结果如图所示:

记录在学习毫升过程中,在MATLAB中集成LibSVM时遇到的问题

记录在学习毫升过程中,在MATLAB中集成LibSVM时遇到的问题