关于libsvm的使用,官方文档和matlab中文论坛大神faruto已经写得很明白,针对libsvm3.22版本稍稍有一点需要改进的。

参考来源:

网址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/

参考文档:《A practical guide to SVM classification》

matlab中文论坛: http://www.matlabsky.com/thread-10966-1-1.html

具体步骤如下:

(1)数据的处理:

LIBSVM使用的数据格式
该软件使用的训练数据和检验数据文件格式如下:
<label><index1>:<value1> <index2>:<value2> ...
其中<label> 是训练数据集的目标值,对于分类,它是标识某类的整数(支持多个类);对于回归,是任意数。<index> 是以1开始的整数,可以是不连续的;<value>为实数,也就是我们常说的自变量。检验数据文件中的label只用于计算准确度或误差,如果它是未知的,只需用一个数填写这一栏,也可以空着不填。在程序包中,还包括有一个训练数据实例:heart_scale,方便参考数据文件格式以及练习使用软件。

例如:+1 1:0.708 2:1 3:1 4:-0.320 5:-0.105 6:-1 8:1.21

(2)缩放数据:

svmscale [-l lower] [-u upper] [-y y_lowery_upper] [-s save_filename] [-r restore_filename] filename;

缺省值: lower = -1,upper = 1,没有对y进行缩放

其中,
-l:数据下限标记;lower:缩放后数据下限;
-u:数据上限标记;upper:缩放后数据上限;
-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;
-s save_filename:表示将缩放的规则保存为文件save_filename;
-r restore_filename:表示将缩放规则文件restore_filename载入后按此缩放;
filename:待缩放的数据文件(要求满足前面所述的格式)。

数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的
文件重定向符号“>”将结果另存为指定的文件。

(缩放规则文件可以用文本浏览器打开,看到其格式为:
lower upper
lval1 uval1
lval2 uval2
其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表
示特征序号;lval 为该特征对应转换后下限lower 的特征值;uval 为对应于转换后上限upper 的特征值。)

使用实例:
例子一: svmscale –s train3.range train3>train3.scale
表示采用缺省值(即对属性值缩放到[ -1,1]的范围,对目标值不进行缩放)
对数据集train3 进行缩放操作,其结果缩放规则文件保存为train3.range,缩放集的缩放结果保存为train3.scale。
例子二: svmscale –r train3.range test3>test3.scale
表示载入缩放规则train3.range 后按照其上下限对应的特征值和上下限值线
性的地对数据集test3 进行缩放,结果保存为test3.scale。

此外,还可以使用matlab中的归一化方法比如mapminmax。

(3)(4)RBF核函数——求最优的C和  ——交叉验证+grid-search 。

一个工具:grid.py 。

具体使用见下一篇文章。 libsvm——参数优化工具grid.py的使用

(5)训练SVM。

Svmtrain的用法:model =svmtrain(training_label_vector, training_instance_matrix 

[, 'libsvm_options']);

training_label_vector:An m by 1 vector of training labels (type mustbe double)。

training_instance_matrix:An m by n matrix of m training instances with nfeatures.。libsvm_options:可用的选项即表示的涵义非常多。这些参数设置可以按照SVM的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。

具体可用参数如下:

-s svm类型:SVM设置类型(默认0)
0 -- C-SVC
1 --v-SVC
2 – one-class-SVM
3 -- e -SVR
4 -- v-SVR
-t 核函数类型:核函数设置类型(默认2)
0 – 线性:u'*v
1 – 多项式:(gamma*u'*v + coef0)^degree
2 – RBF函数:exp(-gamma*|u-v|^2)  
3 –sigmoid:tanh(gamma*u'*v + coef0)
-d degree:核函数中的degree设置(默认3)
-g gamma:核函数中的g函数设置(默认1/ k) ,k是指输入数据中的属性数
-r coef0:核函数中的coef0设置(默认0)
-c cost:设置C-SVC,e-SVR和v-SVR的参数(默认1)
-n nu:设置v-SVC,one-class-SVM和v-SVR的参数(默认0.5)
-p e:设置e-SVR 中损失函数e的值(默认0.1)
-m cachesize:设置cache内存大小,以MB为单位(默认40)
-e e:设置终止准则中的可容忍偏差(默认0.001)
-h shrinking:是否使用启发式,0或1(默认1)

b 概率估计:是否计算SVC或SVR的概率估计,可选值0 或1(默认0);
-wi weight:设置第几类的参数C为weight´C(C-SVC中的C)(默认1)
-v n: n-fold交互检验模式

运行结果(在命令行中显示):
optimization finished, #iter = 1756
nu = 0.464223
obj = -551.002342, rho = -0.337784
nSV = 604, nBSV = 557
Total nSV = 604
其中,#iter为迭代次数;

nu 与前面的操作参数-n n 相同;

obj为SVM文件转换为的二次规划求解得到的最小值;

rho 为判决函数的常数项b;

nSV 为支持向量个数;

nBSV为边界上的支持向量个数;

Total nSV为支持向量总个数。

svmtrain返回一个model结构体(分类问题):

其中的参数意义为:http://www.matlabsky.com/thread-12649-1-1.html

返回结果model的含义:

-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

-sv_indices: values in [1,...,num_traning_data] to indicate SVs in thetraining set

-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

(6)测试模型。

Svmpredict的用法:svmpredict [options]test_file model_file output_file;

options(操作参数):

-b probability_estimates:是否需要进行概率估计预测,可选值为0 或者1,默认值为0;


返回值含义:

predicted_label:预测后得到的label。

accuracy:3 by 1的向量。包括(分类)准确率accuracy、均方误差mean

squared error、(回归)相关系数误差squared correlation coefficient (for regression)。

而且squared correlation coefficient (for regression)越接近你越好,代表回归模型精度越高。


本文精华:

1、如果当前目录在libsvm下,那么就会调用libsvm的svmtrain,而自带的svmtrain的调用格式和libsvm的svmtrain的格式是不一样的,自带的格式是SVMStruct = svmtrain(‘训练矩阵’,‘训练标签’ 'Showplot',ShowplotValue, ...),而libsvm的格式需要把标签写在第一个参数,若想使用自带的,那么把libsvm的路径从搜索路径中删除,即set path然后remove,并且把当前目录切换到toolbox下。

2、不同版本有略微差异。比如安装3.22版本,svmpredict的返回值是三个。而教程上的是两个,导致无法得到结果。

libsvm3.22——使用指南相关推荐

  1. libsvm3.22——在matlab(32位和64位)中的安装

    一.libsvm官方网址 http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 使用入门阅读文档:<A practical guide to SVM classif ...

  2. 13.DoS防御----BeEF浏览器渗透----暴力破解之美杜莎---DNS指南

    DoS防御 启用ICMP,UDP,TCP泛洪过滤 登录路由器管理后台 高级-安全部分 BeEF浏览器渗透 用kali进行客户端攻击 钓鱼攻击 打开beef 浏览器打开beef cd /usr/shar ...

  3. 图像分类matlab结果,libsvm图像二分类后,分类的图像结果如何显示?

    这是训练后的分类器. ------- %% 训练阶段 ReadList1  = textread('P.txt','%s','delimiter','\n');%载入云样本列表 sz1=size(Re ...

  4. Hibernate Reference Documentation

    http://docs.jboss.org/hibernate/core/3.6/reference/zh-CN/html/index.html 前言1. 教程 1.1. 第一部分 - 第一个 Hib ...

  5. LIBSVM使用方法

    1. Libsvm下载 下载libsvm的最新版本,下载地址为http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 目前最新版本为libsvm-3.22 将libsvm- ...

  6. SVM学习——在matlab上安装libsvm库(一)

    环境搭建 平台: Windows PC MATLAB 软件 libsvm库(SVM工具箱) 安装步骤 准备工作 安装对应的编译器,在网站上查看当前matlab版本支持的编译器版本.本文使用的matla ...

  7. vue 3.0 正式版_Vuejs 3 Release:One Piece. Vuejs 3.0 正式版发布!代号:海贼王

    Vuejs 3.0 在北京时间2020年9月19日凌晨,终于发布了 3.0 版本,代号:One Piece.此次vue3.0 为用户提供了全新的 composition-api 以及更小的包大小,和更 ...

  8. vue 生成发布包_Vue 3.0 终于正正正正正式发布了!

    Vue 团队于 2020 年 9 月 18 日晚 11 点半发布了 Vue 3.0 版本,我们连夜对 Release 进行了翻译.由于时间仓促,文中如有翻译不当的地方还望提出.如有侵权,请联系删帖.以 ...

  9. 使用libsvm(faruto)工具箱问题小结

    问题一:Error: C<=0 方法:根据你使用的参数寻优方法,修改参数范围.比如GA方法寻优,找到源文件gaSVMcgForClass.m ,修改C的取值范围为大于0的数即可. 问题二:svm ...

最新文章

  1. python 函数的嵌套 和 作用域链
  2. string.h 的实现
  3. 【slighttpd】基于lighttpd架构的Server项目实战(4)—简单的echo服务器
  4. c语言equal,C ++中的ratio_equal()示例
  5. jquery 一些特效使用
  6. 第二阶段个人总结10
  7. Ansible详解(十四)——Ansible Role实战
  8. ping,python实现批量ping包工具--小案例
  9. Ajax Control Toolkit 控件介绍
  10. VSCode Setting Sync同步设置
  11. VS2017使用Qt教程
  12. python 操作微信 群发_python实现给微信公众号发送消息的方法
  13. 计算机最大化快捷键,最大化窗口快捷键,mac窗口最大化快捷键
  14. 基因组时代线粒体基因组拼装策略及软件应用现状
  15. 秘密:从程序员到领导者的微妙之处
  16. Startssl 现在就启用 HTTPS,免费的!
  17. 天眼查python_GitHub - wagaman/Python-Tianyancha: 天眼查爬虫
  18. Excel — 动态图表(下拉框动态图)
  19. python字母对照表_Python中的字母范围
  20. 7-301 sdut- C语言实验-数组逆序(数组移位)

热门文章

  1. 公众号跳转小程序首次没有数据_小程序如何从“0”开始运营,变成获客神器...
  2. php实现最后登录时间,php实例之基于Cookie的登录表单和获取最后登录时间
  3. mysql 乐观锁和悲观锁,MySQL中的悲观锁与乐观锁
  4. Python:如何安装与使用 pip
  5. Python Imaging Library: ImageWin Module(图像Windows模块)
  6. oracle subset-superset pairs,Oracle 字符集
  7. 送给那些有代码基础但仍旧不会学自动化测试的朋友们
  8. sql语句查看MySQL数据库大小
  9. C++知识点总结(三)
  10. 关于“小米盒子”等的被喷