关闭

在MATLAB中使用libSVM的方法

标签: matlablibsvm分类器
411人阅读 评论(1) 收藏 举报
分类:

在MATLAB中使用libSVM的方法

libsvm库下载:http://www.csie.ntu.edu.tw/~cjlin/libsvm/

详解:http://www.matlabsky.com/thread-11925-1-1.html

安装libsvm方法,参考博客:http://blog.csdn.net/abcjennifer/article/details/7370177


先举一个栗子:

代码:


<span style="font-size:12px;"> clc,clear


%4个训练样本4*4,每个样本4条属性(特征)

train_data=[5.1 3.5 1.4 0.2;4.9 3.0 1.4 0.2;4.7 3.2 1.3 0.2;4.6 3.11.5 0.2];

%4个测试样本4*4,每个样本4条属性(特征)

test_data=[5.0 3.6 1.4 0.2;5.4 3.9 1.7 0.4;4.6 3.4 1.4 0.3;5.0 3.41.5 0.2];


train_labels=[1,1,2,2]';%训练样本标签4*1

test_labels=[1,1,1,1]';%测试样本标签4*1


model = svmtrain(train_labels, train_data);

[predict_label, accuracy,dec_values] =svmpredict(test_labels,test_data, model);

</span>

结果:

optimization finished, #iter = 2

nu = 1.000000

obj = -3.872840, rho = -0.009619

nSV = 4, nBSV = 4

Total nSV = 4

Accuracy = 75% (3/4) (classification)

1.分类问题处理整体正规流程


step1. 选定训练集和测试集 >>规范化 >> 特征提取

step2. 利用训练集训练分类器得到model

step3. 利用model对测试集进行预测

step4. 分类器性能评测[分类准确率的高低

2.svmtrain(… )  通过训练集来训练模型


函数:model= svmtrain(train_label, train_matrix, ['libsvm_options']);

       -train_label:

                    An m by 1 vector oftraining labels (type must be double).   标签数据应是m行1列的数据

       -train_matrix:

                   An m by n matrix of mtraining instances with n features.

                  It can be dense or sparse(type must be double).  训练数据应是m行n列,m表示样本数,n表示1个样本有n中属性

       -libsvm_options:

                  A stringof training options in the same format as that of LIBSVM.  是一个字符串如:'-c 2 -g 0.02 -t 2'

 

Options:可用的选项即表示的涵义如下:

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

                0 -- C-SVC(C-support vector classification)

                1 -- nu-SVC(nu-support vectorclassification)

                2 -- one-class SVM (distributionestimation)  一类SVM

                3 -- epsilon-SVR(epsilon-support vectorregression)

                4 -- nu-SVR (nu-support vectorregression)

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

          0 – 线性:u'v

         1 – 多项式:(r*u'v+ coef0)^degree

         2 – RBF函数:exp(-r|u-v|^2)

         3 –sigmoid:tanh(r*u'v+ coef0)

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

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

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

  -c cost:设置C-SVC,e-SVR和v-SVR的参数(损失函数)(默认1)

  -n  nu:设置v-SVC,一类SVM和v-SVR的参数(默认0.5)

  -p  p:设置e -SVR 中损失函数p的值(默认0.1)

  -m  cachesize:设置cache内存大小,以MB为单位(默认40)

  -e  eps:设置允许的终止判据(默认0.001)

  -h  shrinking:是否使用启发式,0或1(默认1)

  -wi  weight:设置第几类的参数C为weight?C(C-SVC中的C)(默认1)

  -v  n: n-fold交互检验模式,n为fold的个数,必须大于等于2

        其中-g选项中的k是指输入数据中的属性数。option-v 随机地将数据剖分为n部分并计算交互检验准确度和均方根误差。以上这些参数设置可以按照SVM的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。

 

model:SVM根据样本训练的得到的分类器

      model是struct结构[Parameters, nr_class,totalSV, rho, Label, ProbA, ProbB, nSV, sv_coef, SVs]

      model.Parameters参数(均是用户自定义或者默认的)意义从上到下依次为:

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

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

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

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

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

      model.nr_class表示数据集中有多少类别;=2 for regression/one-class svm

      model.Label表示数据集中类别的标签都是什么

      model.totalSV代表总共的支持向量的数目

      model.nSV表示每类样本的支持向量的数目

      model.ProbA和model.ProbB使用-b参数时才能用到,用于概率估计。

     -b  probability_estimates: whether to train a SVC or SVR model for probabilityestimates,0 or 1 (default 0)

      model.sv_coef是一个totalSV*1的矩阵,承装的是totalSV个支持向量在决策函数中的系数

      model.SVs是一个totalSV×维度的稀疏矩阵,承装的是totalSV个支持向量

      model.rho是决策函数中的常数项的相反数

 

 

3.svmpredict(….) 对测试集进行预测


      函数:[predicted_label,accuracy, decision_values/prob_estimates] = svmpredict(test_label, test_matrix,model, ['libsvm_options']);

      返回参数:

      predict_label是预测标签向量

      accuracy从上到下依次的意义分别是:

              -分类准率(分类问题中用到的参数指标)

             -平均平方误差(MSE(mean squared error))[回归问题中用到的参数指标]

             -平方相关系数(r2(squared correlation coefficient))[回归问题中用到的参数指标]

    dec_values是一个包含decision值或概率估计(-b1)的矩阵,如果k个类,对于decision值,每行包含k(k-1)/2个二分类问题的结果;对于概率,每列包含k个属于每类的概率值

 

 

4.注意事项


1.测试数据的格式要求必须是每一列代表一个属性,每一列代表一个样本.

2.数据类型需要是double型.

3.如果自己编写的程序使用到libsvm,就应该将libsvm中的MATLAB代码复制到自编程序位置,否则MATLAB会调用自带的SVM程序,报错“Ymust be a vector or a character array.”

4.跟编译器有关吧,在使用SVM做预测的时候,返回的参数必须填全,否则出来的预测结果是空的,即是:

[predicted_label, accuracy, decision_values] =svmpredict(test_label, test_matrix, model);

 

 

1
0
查看评论

64位LIBSVM在Matlab下的安装使用

libsvm在64位系统下的安装使用,LIBSVM在64位电脑系统下,不用进行编译(mex –setup等)即可使用,只需要进入mex文件所在的文件夹即可调用相应的方法。2位系统与32位MATLAB中,的libsvm安装可以参照网上教程:http://blog.sina.com.cn/s/blog_...
  • qwerasdf_1_2
  • qwerasdf_1_2
  • 2017-03-19 11:20
  • 1301

MATLAB 安装使用libsvm详细步骤(附图)

MATLAB 安装使用libsvm详细步骤(附图)   2012-06-17 09:50:56|  分类: IT |  标签:matlab  libsvm  |举报|字号注:...
  • u014786441
  • u014786441
  • 2014-07-10 09:13
  • 1560

libsvm在matlab中使用

安装及测试过程见: http://noalgo.info/363.html以下是使用过程中总结: 1. svmtrain 和svmpredict 输入参数train_label train_mat test_label test_mat都是double型,因此调用时需要注意数据类型;2.如...
  • hong__fang
  • hong__fang
  • 2015-07-27 11:14
  • 2345

LibSVM-3.20在Matlab2014a中的使用(VS2013)

1. 关于LibSVM 百度百科:http://baike.baidu.com/view/598089.htm 2. LibSVM下载 台湾大学下载界面:http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html  3...
  • lionpku
  • lionpku
  • 2015-04-01 16:07
  • 1922

ubuntu使用matlab版的libsvm

libsvm在matlab中的配置,运行环境是ubuntu。个人的简单设置方式,和大家一起分享。
  • zixianglu
  • zixianglu
  • 2015-03-31 16:35
  • 1626

libsvm matlab使用总结

LibSVM中允许用户指定权重值C+和C-。
  • oJiFengJinCao12
  • oJiFengJinCao12
  • 2015-06-14 22:11
  • 535

libsvm3.21在MATLAB2014a的安装应用之一:安装

转自:关于SVM的那点破事 http://www.matlabsky.com/thread-10966-1-1.html MATLAB技术论坛:MATLABsky.com;视频教学下载交流地址:http://www.matlabsky.com/forum-5-1.html 安装方法:http...
  • muzixiaonv
  • muzixiaonv
  • 2015-12-29 17:02
  • 3795

libsvm在MATLAB中的简单使用

libsvm简介 LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相...
  • xtingjie
  • xtingjie
  • 2017-04-21 11:38
  • 547

Matlab配置libsvm

本文简要介绍了在Matlab下进行libsvm配置的主要过程
  • zhangyalin1992
  • zhangyalin1992
  • 2015-05-06 18:15
  • 2192

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

LibSVM的配置是初学LibSVM者遇到的最麻烦的问题,网上已经有很多关于配置的教程但是质量参差不齐,很多内容已过时,本人综合网上的教程和自己的实践,整理出更为实用简洁的教程。
  • ymmily_fyx
  • ymmily_fyx
  • 2015-05-23 12:45
  • 3250
    个人资料
    • 访问:21583次
    • 积分:275
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:1篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论