LibSVM 安装使用

知道这个库已经很长的时间了,一直没有实践,以前也看过svm的理论,今天开始安装一下一直感觉有错误,结果自己傻了,根本没有错,可以直接使用。。。

libsvm参考资料:

libsvm下载网址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 
我的系统环境为 Win7 64bit + Matlab R2014a ,下载的是最新版的libsvm-3.22

具体流程

  • 下载: 
    从libsvm的主页下载合适的软件安装包,并解压,比如我解压到Matlab的Toolbox目录下,具体路径如下:....\Matlab\R2014b\toolbox
  • 设置Path: 
    在Matlab中依次选择设置路径-添加并包含子文件夹..,加入以上解压后存放的路径。
  • 编译: 
    事实上,对于64位的系统,我们是不需要进行编译的,自带的软件包中已经包含了对应于64位系统的编译好的文件:libsvmread.mexw64、libsvmwrite.mexw64、svmtrain.mexw64、svmpredict.mexw64,以上文件位于压缩包‘..\windows‘文件夹中。对于非64位系统,或者需要自己编译的特殊情况,采用如下de步骤编译自己的二进制文件。 
    • 在matlab中切换到解压后的libsvm-3.22\matlab目录(如我的系统为:...\Matlab\R2014b\toolbox\libsvm-3.20\matlab
    • 在命令窗口输入mex -setup ,此时会提示你选择编译器,就选择一个已安装的编译器,如Microsoft Visual C++ 2013。之后Matlab会提示确认选择的编译器,输入y进行确认。
    • 在命令窗口输入make,等待make完成,生成相应的后缀为mexw64(64位系统)或mexw32(32位系统)的文件。
    • 这里要说明,其实前一步的mex -setup并不是必须的,在make指令不奏效的时候调用一下即可;另外,在我的配置过程中,会提示有问题,大致如下所示, 其实并不需要在意,直接调用make 也会成功编译文件。

MEX 配置为使用 ‘Microsoft Visual C++ 2013 Professional (C)’ 以进行 C 语言编译。 
警告…您需要更新代码以利用新的 API。您可以在以下网址找到相关详细信息…

先一直没有看到类似的:

mex -setup
显示

Please choose your compiler for building external interface (MEX) files:

Would you like mex to locate installed compilers [y]/n?

输入y

Select 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

以为没有安装上,没有编译通过,结果是可以用的。load数据也有问题,路径不对:

有两个数据集,一个是C++的, 一个是matlab的。libsvm库中下载的是C++数据,

所以matlab加载我们下载的heart_scale是会报错的:<这就是视频中遗漏的小问题>

  • 重命名: 
    这并不是必须的操作,但鉴于个人的经验,建议执行。 
    编译完成后,在当前目录下回出现svmtrain.mexw64、svmpredict.mexw64(64位系统)或者svmtrain.mexw32、svmpredict.mexw32(32位系统)这两个文件,把文件名svmtrain和svmpredict相应改成libsvmtrain和libsvmpredict。 
    这是因为Matlab中自带有SVM的工具箱,而且其函数名字就是svmtrain和svmpredict,和libsvm默认的名字一样,在实际使用的时候有时会产生一定的问题,比如想调用libsvm的变成了调用Matlab SVM。 
    如果有进行重命名的,以后使用libsvm时一律使用libsvmtrain和libsvmpredict这两个名字进行调用。

特别补充:

以上是普通的libsvm在matlab 2014b 的设置,起初对于我而言,也是并不需要编译的,直接设置路径就可以使用libsvm,但是由于我需要使用对样本加权的训练方法,于是经过搜索,发现他们也是提供libsvm-weights-3.20版本的,参见这里,其中提供了Matlab和Python的接口,而并不存在已经编译好的文件,所以我需要进行编译并使用这一带权重的版本。

测试

以下测试是基于我配置的加权的libsvm的版本。 
libsvm软件包下的heart_scaleheart_scale.wgt文件分别提供了样本的label及feature信息和权重信息。要注意对于以上两个文件,其读取指令是不同的,以下将简单演示:在matlab命令窗口执行如下命令:

[heart_scale_label, heart_scale_inst] = libsvmread(‘heart_scale‘); %读取方法
heart_scale_weight = load(‘heart_scale.wgt‘);
model = libsvmtrain(heart_scale_weight, heart_scale_label, heart_scale_inst, ‘-c 1‘); %改名字了吧  +lib
[predict_label, accuracy, dec_values] = libsvmpredict(heart_scale_label, heart_scale_inst, model);

结果如下:

*
optimization finished, #iter = 166
obj = -107.553365, rho = 0.449867
nSV = 131, nBSV = 103
Total nSV = 131
Accuracy = 86.2963% (233/270) (classification)

特别的,对于不需要对样本考虑权重的情况,只需要修改训练的指令为:

model = libsvmtrain([], heart_scale_label, heart_scale_inst, ‘-c 1‘);

ok,以上就是对于Matlab 2014a使用libsvm(libsvm-weights)的简要记录。

svmtrain函数相关参数说明

svmtrain函数返回的model可以用来对测试数据集进行预测。这是一个结构体变量,主要包括了以下几个域。[Parameters, nr_class, totalSV, rho, Label, ProbA, ProbB, nSV,sv_coef, SVs]。英文说明如下:

-Parameters: parameters

-nr_class: number of classes; = 2 for regression/one-class svm

-totalSV: total #SV

-rho: -b of the decision function(s) wx+b

-Label: label of each class; empty for regression/one-class SVM

-ProbA: pairwise probability information; empty if -b 0 or in one-classSVM

-ProbB: pairwise probability information; empty if -b 0 or in one-classSVM

-nSV: number of SVs for each class; empty for regression/one-class SVM

-sv_coef: coefficients for SVs in decision functions

-SVs: support vectors

如果没有指定’-b 1’选项则ProbA和ProbB为空矩阵。此外,当指定’-v’选项时,返回的model是一个数值,是cross-validation的准确率。

其中model.paramter是一个5X1的向量,参数意义为:

model.Parameters参数意义从上到下依次为:

-s svm类型:SVM设置类型(默认0)

-t 核函数类型:核函数设置类型(默认2)

-d degree:核函数中的degree设置(针对多项式核函数)(默认3)

-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数) (默认类别数目的倒数)

-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)

svmpredict函数参数说明

svmpredict函数返回三个值,predict_label,是训练集预测得到的label向量。第二个输出是accuracy,是一个3维的向量,从上到下分别是:分类准率(分类问题中用到的参数指标);平均平方误差(MSE (mean squared error))(回归问题中用到的参数指标);平方相关系数(r2 (squared correlation coefficient))(回归问题中用到的参数指标)。第三个输出是个矩阵,包含着决策值或者是概率估计(当’-b 1’被指定时)。当训练数据有k类时,决策值矩阵是一个n行k*(k-1)/2列的矩阵(n为测试数据集个数,k为类别数),而每一行的输出是k*(k-1)/2个二分类器的结果。当’-b 1’被指定时,概率估计矩阵是一个n行k类的矩阵(n为测试数据集个数,k为类别数),每一行的输出是该测试数据属于每个类的概率。

先试着学习,孰能生巧。。。

特别感谢:Matlab配置libsvm

SVM学习笔记(1)LIBSVM在matlab下的使用安装

LibSVM 在matlab中的使用

LibSVM 在matlab中的配置(包括SVDD、libsvm-faruto)

时间: 2024-10-12 07:58:15

LibSVM 安装使用的相关文章

MATLAB安装libsvm无法使用解决办法(转)

buaasuozi  这是原作者: 安装libsvm 不成功有可能是你的MATLAB版本或者是编译文件版本的问题,但是不要急着换其他版本....说不定就有别的解决办法呢 首先感谢Lin教授及其实验室提供的libsvm工具箱,原始下载地址:下载主页:http://www.csie.ntu.edu.tw/~cjlin/libsvm/       下载地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/#download 原本我使用的是libsvm-3.01版本,但

Windows 64 位 Matlab R2013a 环境下安装 libsvm

在这种环境下, 安装 libsvm 可以说是傻瓜似的了, 但就我搜出的 libsvm 安装教程来看, 以前的 libsvm 安装起来是有点麻烦的 目前最新版本是 libsvm 3.18, 按照 [1] 的描述, 将 libsvm 的 windows 目录放到 matlab 目录中, 我想博主说的这个目录应该不是 matlab 的当前工作目录, 而是 matlab 的搜索目录. 因为当前工作目录只有一个, 你把它设为 windows, 那么 libsvm 目录下的 heart_scale 数据集就

matlab libsvm支持向量机工具箱安装与使用

http://download.csdn.net/my这里可以下载支持向量机工具箱,本人maltab R2012B 和3.1匹配使用,其他的不行,大家在看着教程出现问题后,如果本文没有提到,先搜索错误,如果没有明确给出答案,多尝试不同的版本也许就可以用了,我的就是一样的教程换了4个工具箱后才可以使用(版本问题). 首先是下载好安装压缩包,我这里下载的是libsvm-3.1.zip,下载好,解压,然后将其放到MATLAB安装文件夹toolbox文件夹下,这里说明一点:并不是必须要到这个文件夹下,只

win10环境下python版libsvm的安装

1.前言 由于毕业设计需要用到libsvm,所以最近专心于配置libsvm,曾经尝试过在matlab中安装,但是没有成功.最终在Python环境中完成安装. 2.LIBSVM介绍 LIBSVM 是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个操作简单.易于使用.快速有效的 SVM 软件包.可以解决分类问题(包括 C-SVC.n-SVC ).回归问题(包括 e-SVR.n-SVR )以及分布估计(one-class-SVM)等问题,提供了线性.多项式.径向基和 S 形函数四种常用的

libsvm 配置

亲测,运行环境win10  64位系统,matlab R2014b   libsvm-3.21   visual studio 2013 下载:http://download.csdn.net/download/u012260117/9810317 libsvm 测试数据集 1,下载libsvm 2,解压到C:\Program Files\MATLAB\R2014b\toolbox 3,设置路径 Add  Folder和Add with Subfolders都设置. 4,打开make.m 输入m

环境配置记录

eclipse工程红色感叹号: 原因:显示红色感叹号是因为jar包的路径不对 解决:在项目上右击Build Path -> Configure Build Paht...(或Propertise->Java Build Path),在Java Build Path中Libraries,红色叉号的包为路径错误的包. 处理好后返回刷新工程即可,这个问题一般是导入别人的项目或之前的一些JAR包移动了它的存储位置. PS: 工程上黄色盾牌感叹号,表示有引用了jar包,但是实际上没有使用这个jar包(可

我的第一个svm程序:手写字识别

之前学过svm相关知识,基本原理不算复杂,今天做了一个手写字识别程序,总算验证了svm的效果. 因为只是验证效果,实现上原则是简单,使用python + libsvm + PIL(python image library).这部分工作花了一些时间: PIL: http://www.pythonware.com/products/pil/ 下载源码包,解压之后运行:python setup.py install即可. max下python libsvm安装使用:http://blog.csdn.n

在 linux(ubuntu) 下 安装 LibSVM

原文:http://blog.csdn.net/rav009/article/details/12995095 在安装LibSVM前需要先装 python 和 gnuplot linux 一般都自带了python2.7,所以python的安装不再赘述 在 ubuntu 下安装 gnuplot 不能直接 sudo apt-get install gnuplot,因为预编译的gnuplot不能识别ubuntu的图形界面,所以必须先运行这句: [plain] view plaincopy sudo a

LIBSVM在matlab下的使用安装

1) 从LIBSVM的官网http://www.csie.ntu.edu.tw/~cjlin/libsvm/上下载最新版本的LIBSVM,当前版本为libsvm-3.18.zip 2) 解压压缩包到电脑上一位置,如:C:\Program Files\libsvm-3.18 3) 假设你使用的是64位的操作系统和matlab.此时将libsvm-3.18文件夹下的windows目录添加到matlab目录中.即在matlab目录中添加:C:\ProgramFiles\libsvm-3.18\wind