1、 Libsvm下载

下载libsvm的最新版本,下载地址为http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 目前最新版本为libsvm-3.22
将libsvm-3.22.zip解压,我的解压到了F:\libsvm。
添加环境变量到path:我的电脑->属性->高级->环境变量->系统变量->变量列表里面双击 Path,在变量值最后添加;F:\libsvm\libsvm-3.22\windows 然后点击确定即可。
解压后可以看到,主要有5个文件夹和一些c++源码文件:
Java——主要是应用于java平台;
Python——是用来参数优选的工具,稍后介绍;
svm-toy——一个可视化的工具,用来展示训练数据和分类界面,里面是源码,其编译后的程序在windows文件夹下;
tools——主要包含四个python文件,用来数据集抽样(subset),参数优选(grid),集成测试(easy),数据检查(checkdata);
windows——包含libSVM四个exe程序包,我们所用的库就是他们,里面还有个heart_scale,是一个样本文件,可以用记事本打开,用来测试用的。
其他.h和.cpp文件都是程序的源码,可以编译出相应的.exe文件。其中,最重要的是svm.h和svm.cpp文件,svm-predict.c、svm-scale.c和svm-train.c(还有一个svm-toy.c在svm-toy文件夹中)都是调用的这个文件中的接口函数,编译后就是windows下相应的四个exe程序。另外,里面的 README 跟 FAQ也是很好的文件,对于初学者如果E文过得去,可以看一下。

2、运行python程序的环境配置

由于有可能使用到F:\libsvm\libsvm-3.22\tools下的工具,所以的搭建相应的环境,下载两个软件python和gnuplot,下面说一下两个软件的下载地址和配置:
a.对于python,下载地址在http://www.python.org上寻找下载,我用的是python2.7的,测试成功。安装在任意目录就行(我放在F:),将F:\Python27 添加到系统环境变量中。另外将F:\Python27 中的python.exe添加到F:\libsvm\libsvm-3.22\windows下面即可。
b.对于gnuplot,下载地址在http://www.gnuplot.info/ 。他不用安装,直接将gp530-20180104-win64-mingw http://www.tatsuromatsuoka.com/gnuplot/Eng/winbin/解压放到指定目录即可(我放在F:\libsvm)。然后拷贝其中的gnuplot.exe放到F:\libsvm\libsvm-3.22\windows下面即可。

3、数据格式说明

该软件使用的训练数据和检验数据文件格式如下:
[label] [index1]:[value1] [index2]:[value2] …
[label] [index1]:[value1] [index2]:[value2] …
Label 就是说class(属于哪一类), 就是你要分类的种类,通常是一些整数。
index 是有順序的索引,通常是连续的整数。就是指特征编号,必须按照升序排列
value 就是特征值,用来 train 的数据,通常是一堆实数组成。
(注:修改训练和测试数据的格式为程序可以识别的格式)

目标值 第一维特征编号:第一维特征值 第二维特征编号:第二维特征值…
目标值 第一维特征编号:第一维特征值 第二维特征编号:第二维特征值…
……
例如: 2.3 1:5.6 2:3.2
表示训练用的特征有两维,第一维是5.6,第二维是3.2,目标值是2.3
注意:训练和测试数据的格式必须相同,都如上所示。测试数据中的目标值是为了计算误差用 )

4、svmscale的用法

svmscale是用来对原始样本进行缩放的,范围可以自己定,一般是[0,1]或[-1,1]。缩放的目的主要是:
1)防止某个特征过大或过小,从而在训练中起的作用不平衡;
2)为了计算速度。因为在核计算中,会用到内积运算或exp运算,不平衡的数据可能造成计算困难。

用法:svmscale [-l lower] [-u upper]
[-y y_lower y_upper]
[-s save_filename
[-r restore_filename] filename

其中,[]中都是可选项:
-l:设定数据下限;lower:设定的数据下限值,缺省为-1
-u:设定数据上限;upper:设定的数据上限值,缺省为 1
-y:是否对目标值同时进行缩放;y_lower为下值,y_upper为上限值;
-s save_filename:表示将缩放的规则保存为文件save_filename;
-r restore_filename:表示将按照已经存在的规则文件restore_filename进行缩放;
filename:待缩放的数据文件,文件格式按照libsvm格式。

默认情况下,只需要输入要缩放的文件名就可以了:比如(已经存在的文件为test.txt)
svmscale test.txt
这时,test.txt中的数据已经变成[-1,1]之间的数据了。但是,这样原来的数据就被覆盖了,为了让规划好的数据另存为其他的文件,我们用一个dos的重定向符 > 来另存为(假设为out.txt):
svmscale test.txt > out.txt
运行后,我们就可以看到目录下多了一个out.txt文件,那就是规范后的数据。假如,我们想设定数据范围[0,1],并把规则保存为test.range文件:
svmscale –l 0 –u 1 –s test.range test.txt > out.txt
这时,目录下又多了一个test.range文件,可以用记事本打开,下次就可以用-r test.range来载入了。

5、svmtrain的用法

svmtrain我们在前面已经接触过,他主要实现对训练数据集的训练,并可以获得SVM模型。
用法: svmtrain [options] training_set_file [model_file]
其中,options为操作参数,可用的选项即表示的涵义如下所示:
-s设置svm类型:
0 – C-SVC
1 – v-SVC
2 – one-class-SVM
3 –ε-SVR
4 – n - SVR

-t设置核函数类型,默认值为2
0 –线性核:u’*v
1 –多项式核:(g*u’*v+coef0)degree
2 – RBF核:exp(-γ*||u-v||2)
3 – sigmoid核:tanh(γ*u’*v+coef0)

-d degree:设置多项式核中degree的值,默认为3
-g γ:设置核函数中γ的值,默认为1/k,k为特征(或者说是属性)数;
-r coef 0:设置核函数中的coef 0,默认值为0;
-c cost:设置C-SVC、ε-SVR、n - SVR中从惩罚系数C,默认值为1;
-n v:设置v-SVC、one-class-SVM与n - SVR中参数n,默认值0.5;
-p ε:设置v-SVR的损失函数中的e,默认值为0.1;
-m cachesize:设置cache内存大小,以MB为单位,默认值为40;
-e ε:设置终止准则中的可容忍偏差,默认值为0.001;
-h shrinking:是否使用启发式,可选值为0或1,默认值为1;
-b概率估计:是否计算SVC或SVR的概率估计,可选值0或1,默认0;
-wi weight:对各类样本的惩罚系数C加权,默认值为1;
-v n:n折交叉验证模式;

model_file:可选项,为要保存的结果文件,称为模型文件,以便在预测时使用。
默认情况下,只需要给函数提供一个样本文件名就可以了,但为了能保存结果,还是要提供一个结果文件名,比如:test.model,则命令为:
svmtrain test.txt test.model

6、 svmpredict的用法

svmpredict是根据训练获得的模型,对数据集合进行预测。
用法:svmpredict [options] test_file model_file output_file
其中,options为操作参数,可用的选项即表示的涵义如下所示:
-b probability_estimates——是否需要进行概率估计预测,可选值为0或者1,默认值为0。

model_file ——是由svmtrain产生的模型文件;
test_file——是要进行预测的数据文件,格式也要符合libsvm格式,即使不知道label的值,也要任意填一个,svmpredict会在output_file中给出正确的label结果,如果知道label的值,就会输出正确率;
output_file ——是svmpredict的输出文件,表示预测的结果值。

7、使用libsvm

windows 进入 cmd命令窗口
下载的libsvm包里面已经为我们编译好了(windows)。
进入libsvm\windows,可以看到这几个exe文件:
a. svm-predict:
使用命令格式:svm-predict.exe test_file mode_file output_file
依照已经train好的model ,输入新的数据,并输出预测新数据的类别。
b.svm-scale: 有时候特征值的波动范围比较大需要对特征数据进行缩放,可以缩放到0–1之间(自己定义)。
c.svm-toy:似乎是图形界面,可以自己画点,产生数据等。
d.svm-train
使用命令格式:svm-train.exe [option] train_file model_file
train 会接受特定格式的输入,产生一个model 文件。
第一步:可以自己生成数据,使用svm-toy:
双击svm-toy,点击change可以在画布上画点:

点击run,其实就是train的过程,划分的区域:

点击save可以保存数据(假设保存的数据在D://libsvm.txt)。
第二步:使用训练数据libsvm.txt进行建模,使用svm-train:
使用cmd命令进入到我们解压的libsvm目录中的windows目录,使用svm-train,如下:

其中,
iter为迭代次数,
nu 是你选择的核函数类型的参数,
obj为SVM文件转换为的二次规划求解得到的最小值,
rho为判决函数的偏置项b,
nSV 为标准支持向量个数介于[0,c]
nBSV为边界上的支持向量个数(a[i]=c),
Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于多类,这个是各个分类模型的nSV之和
同时在该目录下会生成一个训练好的model(libsvm.txt.model)可以打开文件查看里面的内容,主要包括一些参数和支持向量等
第三步:使用建好的model进行预测,使用svm-predict

同时会生成一个输出文件(libsvm.txt.out),每行代表该行的预测值类别。

8、参数优化

svm的参数优化很重要,libsvm包里面包含了参数的优化函数,主要是暴力求解参数。一般来说我们会使用高斯核函数,包含两个参数(c 和 g)
使用gird.py文件进行参数优化选择:
grid.py在libsvm/tools里面,首先需要修改gird.py中的gnuplot文件路径问题,把文件里的路径改成gnuplot 存放的目录:

进入grid.py的相应目录,执行grid.py D://libsvm.txt

前面两个分别是c 跟g的值,这时候我们重新训练模型(加上参数c g)

可以看到,准确率有了显著的提升, 其实这些步骤完全可以使用easy.py进行实现,同理也需要修改eays.py里面的gnuplot文件路径问题,把文件里的路径改成gnuplot 存放的目录

步骤总结如下:
1.转换训练数据为相应的格式。
2.有时候可能需要使用 svm-scale对数据进行相应的缩放,有利于训练建模。

3.使用grid.py或者easy.py进行参数优化。
4.使用svm-train建模和svm-predict进行预测。

参考:
https://www.cnblogs.com/zhazhiqiang/p/3599218.html
https://jingyan.baidu.com/article/86fae346f8a7113c49121a3f.html
http://blog.csdn.net/zy_zhengyang/article/details/45009431

LIBSVM使用方法相关推荐

  1. libsvm使用方法总结

    1.所需要软件下载: (1)libsvm(http://www.csie.ntu.edu.tw/~cjlin/libsvm/) (2)python (3)gnuplot 画图软件(ftp://ftp. ...

  2. weka和matlab完成完整分类实验

    本文 本文简单介绍数据集介绍.weka的使用.weka与LIBSVM.matlab与LIBSVM以及分类的若干细节问题. 1. 数据集介绍 打开网址UCI数据集,如下图.    从右下角可以看到Iri ...

  3. ROS下的人体姿态识别tf-pose-estimation(tensorflow版本的openpose)

    相关链接: 项目: tf-pose-estimation https://github.com/ildoonet/tf-pose-estimation tf-pose-estimation for R ...

  4. matlab查看支持向量数,支持向量机回归 MATLAB程序 参数设置(转)

    LIBSVM使用方法 LibSVM是以源代码和可执行文件两种方式给出的.如果是Windows系列操作系统,可以直接使用软件包提 供的程序,也可以进行修改编译:如果是Unix类系统,必须自己编译,软件包 ...

  5. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群

    作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...

  6. Java面试题大全2021版

    一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...

  7. LIBSVM的使用方法以及参数注释总结

    目录 1. 模型训练 1.1 libsvmtrain三个输入参数,其中 1.2 libsvmtrain返回参数 1.3 模型最佳参数选取 1.4 SVM 怎样能得到好的结果 2. 使用训练模型进行预测 ...

  8. 【LIBSVM中的 SVMcgForClass提示不存在的解决方法】

    LIBSVM中的 SVMcgForClass提示不存在的解决方法 应该是下载了错误的libsvm版本,我之前也是碰到这个问题,后面下载了frauto的最新版本,里面就有这个函数,把路径包含进去就可以了 ...

  9. (转)python 搭建libsvm方法。python版本和libsvm版本匹配很重要!

    <集体智慧编程>关于婚介数据集的SVM分类 转自:http://muilpin.blog.163.com/blog/static/165382936201131875249123/ 作者写 ...

最新文章

  1. 存储的学习:freenas使用记录
  2. 计算机网络:单播,多播
  3. 对待棘手bug,新手与大牛的差距在哪里?
  4. Eclipse常用技巧总结:热键,自定义模版及其他
  5. 地理数据库 (geodatabase) 的架构
  6. 【Boost】系列02:内存管理之scoped_ptr智能指针
  7. python图片显示中文
  8. 总线制和多线制示意图_主机总线线 总线制和多线制示意图
  9. pe估值 python_Python编程学习笔记(7)
  10. UIBackgroundTaskIdentifier 进入后台后结束任务再挂起APP
  11. 相对布局父类属性_Unity3D RectTransform使用详解:布局、属性、方法
  12. 恭喜你,2018 中国开发者有奖大调查“榜上有名”!
  13. Android反编译添加组件,Android 反编译工具
  14. 探索新技术经验分享(六)logicaldoc二次开发探索
  15. 巴厘岛最全的美食攻略
  16. 【中科院】分子生物学-朱玉贤第四版-笔记-第14-16讲 真核生物基因表达调控
  17. 星期一到星期日的英文 缩写 读音 巧记方法
  18. 欧美风游戏音乐的特点
  19. 我被一只老鼠的吱吱声吵醒了
  20. “砍价”技巧受用终生

热门文章

  1. 《当90后遇上创业》导读
  2. centos 使用mutt发送邮件带附件
  3. asiHttpRequst 学习地址
  4. InstallShield 2011新功能试用(9)- 安装包大小压缩
  5. h5的语义化部分_Html5新增的语义化标签(部分)
  6. html标签转换含义,html标签含义
  7. mysql中的运算符的执行顺序_【MySQL】执行顺序
  8. java split 数字_java截取字符串,截串,substring和split,分割字母和数字,正则缝隙...
  9. bartlett 算法 matlab,GWO(灰狼优化)算法MATLAB源码逐行中文注解(转载)
  10. php获取随机图片,PHP 随机显示某张图片