本系列文章由 @YhL_Leo 出品,转载请注明出处。

文章链接: http://blog.csdn.net/yhl_leo/article/details/50112477


官方Web: https://www.csie.ntu.edu.tw/~cjlin/libsvm/

GitHub: https://github.com/cjlin1/libsvm

Tutorial: http://ntu.csie.org/~piaip/svm/svm_tutorial.html

1 库组成

Dos下运行程序有编译好的exe文件可以直接运行。例如本人的libSVM(版本为3.20)解压在E:\ClassTask\libsvm-3.20目录下:



其中heart_scale文件是一个libSVM库提供的训练示例样本,打开后可以发现里面是一堆这样的数据:



很容易看出,数据集结构是:

label vec{(index_1,value_1), ...(index_13, value_13)}

即两类观测值+1-1,后面的13维向量是每个样本某一特征的特征值。

进入windows子文件夹下有:

其中包含四个exe文件:

  • svm-predict:依照已经训练好的model ,输入新的数据,并输出预测新数据的类别。
  • svm-scale:有时候特征值的波动范围比较大需要对特征数据进行缩放,范围可以自己定,一般是[0,1]或[-1,1]。
  • svm-toy:图形界面,可以自己画点,产生数据,并显示/保存分类结果。
  • svm-train:会接受特定格式的训练输入文件,产生一个model 文件。

2 svm-train

首先来看svm-train,在Dos下切换到windows目录下(Win+R->cmd->切换盘符,cd切换文件夹),后输入命令:

> E:\ClassTask\libsvm-3.20\windows> svm-train ..//heart_scale ..//train.model

这里并没把heart_train文件拷入到windows下,而是在其前一层父目录中。如果已经拷到windows目录下,就无需..//

回车后很快就会出现:

其中:

  • #iter为迭代次数
  • nu是选择的核函数类型的参数
  • obj为SVM文件转换为的二次规划求解得到的最小值
  • rho为判决函数的偏置项b
  • nSV为标准支持向量个数(0<ai<c)
  • nBSV为边界上的支持向量个数(ai=c′)
  • Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于n类,Total nSV =∑ni=1nSV

打开train_model文件可以看到:

其中:

  • svm_type c_svc:所选择的svm类型,默认为c_svc
  • kernel_type rbf:训练采用的核函数类型,此处为RBF
  • gamma 0.0769231RBF核的参数γ
  • nr_class 2:类别数,此处为两分类问题
  • total_sv 132:支持向量总个数
  • rho 0.424462:判决函数的偏置项b
  • label 1 -1:原始文件中的类别标识
  • nr_sv 64 68:每个类的支持向量机的个数
  • SV:以下为各个类的权系数及相应的支持向量

3 svm-predict

再看svm-predict,利用刚刚训练完成的模型就可以进行分类:

> E:\ClassTask\libsvm-3.20\windows> svm-predict ..//heart_scale ..//train.model ..//train.out

回车后,就会得到一个生成文件train.out,同时Dos中也会输出分类精度:

即分类精度为86.6667%,而train.out文件打开后,每行只有-11表示样本的类别。

4 svm-scale

数据缩放的主要目的有两个:

  • 防止某个特征过大或过小,从而在训练中起的作用不平衡;
  • 为了计算速度。因为在核计算中,会用到内积运算或exp运算,不平衡的数据可能造成计算困难。

用法为:

> svm-scale -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
  • -r:表示将按照已经存在的规则文件restore_filename进行缩放
  • filename:待缩放的数据文件,文件格式按照libSVM格式

例如键入下面的指令:

E:\ClassTask\libsvm-3.20\windows>svm-scale -s ..//scaled.out ..//heart_scale > ..//save.data

就会生成两个文件scaled.outsave.data,可以自行查看其中的内容。

5 svm-toy

svm-toy是一个用户测试小工具,运行后如下:

随机用鼠标点一些点,然后点击change增加新的类别,例如随机画三类点:

点击run,可以得到分类结果:

LibSVM-windows的更多相关文章

  1. libsvm下的windows版本中的工具的使用

    下载的libsvm包里面已经为我们编译好了(windows).进入libsvm\windows,可以看到这几个exe文件: a.svm-toy.exe:图形界面,可以自己画点,产生数据等. b.svm ...

  2. Libsvm Matlab 快速安装教程 (适用于Win7+, 64bit, and Matlab2016a+)

    近日在开始学习Machine Learning SVM 相关算法,将Matlab平台安装SVM的步骤记录如下,亲测可用: 开发环境: Windows 8 64 bit, Matlab 2016a, S ...

  3. Libsvm:脚本(subset.py、grid.py、checkdata.py) | MATLAB/OCTAVE interface | Python interface

    1.脚本 This directory includes some useful codes: 1. subset selection tools. (子集抽取工具) subset.py 2. par ...

  4. Linux下的Libsvm使用历程录

    原文:http://blog.csdn.net/meredith_leaf/article/details/6714144 Linux下的Libsvm使用历程录 首先下载Libsvm.Python和G ...

  5. libsvm使用方法总结

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

  6. python之基于libsvm识别数字验证码

    1. 参考 字符型图片验证码识别完整过程及Python实现 2.图片预处理和手动分类 (1)分析图片 from PIL import Image img = Image.open('nums/ttt. ...

  7. libsvm使用说明

    http://www.hankcs.com/ml/libsvm-usage.html libsvm使用说明 码农场 > 机器学习 2016-02-18 阅读(345) 评论(0)  目录   l ...

  8. LibSVM学习详细说明

    代码文件主要针对Matlab进行说明,但个人仍觉得讲解的支持向量机内容非常棒,可以做为理解这一统计方法的辅助资料; LibSVM是台湾林智仁(Chih-Jen Lin)教授2001年开发的一套支持向量 ...

  9. 转自网络用LIBSVM进行回归预测的粗浅认识————————作者师梦

    说一说我对用LIBSVM进行回归预测的粗浅认识(整理完成于2012年5.11) 作者 :  师梦       吾本工程小硕一枚,前用matlab建模,已然完成.某日,正沾沾自喜之际,吾师曰:“汝已为之 ...

  10. svm训练显示信息说明

    现简单对屏幕回显信息进行说明: #iter 为迭代次数, nu  与前面的操作参数 -n nu  相同, obj 为 SVM 文件转换为的二次规划求解得到的最小值, rho  为判决函数的常数项 b  ...

随机推荐

  1. 2019-02-25 SQL:cast(itemvalue as decimal(19,4))

    1.Operand data type nvarchar(max) is invalid for sum operator 要转换格式 2.Conversion failed when convert ...

  2. RabbitMQ消息可靠性分析 - 简书

    原文:RabbitMQ消息可靠性分析 - 简书 有很多人问过我这么一类问题:RabbitMQ如何确保消息可靠?很多时候,笔者的回答都是:说来话长的事情何来长话短说.的确,要确保消息可靠不只是单单几句就 ...

  3. STM32 软件复位并模拟USB拔插

    最近做了个USB跟上位机的通信,需要软件对MCU进行复位,复位后如果USB没有拔插,PC就不会重新枚举USB为了解决这个问题,我做了软件复位跟,软件模拟USB拔插. 这里我用的是HAL库的软件复位,复 ...

  4. Maven学习总结(23)——Maven常用命令介绍

    1.生成eclipse项目:mvn eclipse:eclipse 2.清除eclipse的一些系统设置:mvn eclipse:clean 3.mvn tomcat:run 在tomcat里面运行 ...

  5. 第九章 Servlet API

    第九章 Servlet API Servlet API 定义了Servlet和服务器之间的一个标准接口,这使得Servlet具有跨应用服务器的特性,通过使用Servlet API,开发人员不必关心服务 ...

  6. ASP.NET-未解决的问题

    001.((FormsIdentity)User.Identity).Ticket.UserData 用ASP.NET后台格式化成json数据后传回去的数据有&quot这样的符号 002.HT ...

  7. oauth2.0里回调地址返回code中如何让code不显示在URL里?

    背景: 最近在调用对方提供的oauth2.0接口的时候,返回code在URL显示,但是会影响到本系统调用其他的菜单项的操作,所以想把返回的code值去掉. 解决办法:     想了各种解决办法,目前把 ...

  8. iOS 图像处理-调整图像亮度

    - (UIImage*) getBrighterImage:(UIImage *)originalImage { UIImage *brighterImage; CIContext *context ...

  9. nyoj--236--心急的C小加(动态规划&&LIS)

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间 ...

  10. kettle工具的设计模块

    大家都知道,每个ETL工具都用不同的名字来区分不同的组成部分.kettle也不例外. 比如,在 Kettle的四大不同环境工具 本博客,是立足于kettle工具的设计模块的概念介绍. 1.转换 转换( ...