libsvm下的windows版本中的工具的使用
下载的libsvm包里面已经为我们编译好了(windows)。进入libsvm\windows,可以看到这几个exe文件:
a.svm-toy.exe:图形界面,可以自己画点,产生数据等。
b.svm-scale.exe:对特征值进行缩放。
c.svm-train.exe:接收特定格式的输入,产生一个model文件。
d.svm-predict.exe:依照已经train好的model,输入新的数据,并输出预测新数据的类别。
svm-toy.exe
可以自己生成数据,双击svm-toy,点击change可以在画布上画点:

点击run,其实就是train的过程。它是个toy(玩具),是为了人们更形象地了解svm,其具体玩法就不做介绍了。
svm-scale.exe
因为原始数据可能范围过大或过小,svmscale可以先将数据重新scale(缩放)到适当范围使训练与预测速度更快。
使用方法:
svm-scale.exe [-l lower] [-u upper] [-y y_lower y_upper] [-s save_name] [-r store_name] filename
其中:
-l lower : x scaling lower limit (default -1) 特征值缩放下限,默认为-1
-u upper : x scaling upper limit (default +1) 特征值缩放上限,默认为+1
-y y_lower y_upper : y scaling limits (default: no y scaling) 是否对目标值进行缩放及缩放的上下限,默认不缩放 注意:(回归需要对目标进行缩放,因此该参数可以设定为 -y -1 1)
-s save_filename : save scaling parameters to save_filename 表示将缩放的规则保存为文件save_filename
-r restore_filename : restore scaling parameters from restore_filename 表示将缩放规则文件restore_filename载入后按此规则缩放
若要了解更具体的缩放规则,请参考:http://blog.csdn.net/dxy_1110/article/details/43851955
svm-train.exe
用于训练数据,生成模型;
使用方法:
svm-train.exe [options] training_set_file [model_file]
其中:
options(操作参数):可用的选项即表示的含义如下所示:
-s svm类型:设置SVM类型,默认值为0,可选类型有(对于回归只能选3或4):
0 – C-SVC 1 – n-SVC 2 -- one-class-SVM 3 – e-SVR 4 – n-SVR
-t 核函数类型:设置核函数类型,默认值为2,可选类型有:
0 -- 线性核: u'*v 1 -- 多项式核: (g*u'*v+ coef 0)deg ree 2 -- RBF 核: e( u v 2) g – 3 -- sigmoid 核: tanh(g*u'*v+ coef 0)
-d degree:核函数中的degree设置,默认值为3;
-g g:设置核函数中的g,默认值为1/k;
-r coef0:设置核函数中的coef0,默认值为0;
-c cost:设置 C- SVC 、 e - SVR 、 n - SVR 中的惩罚系数 C ,默认值为 1 ;
-n n:设置n - SVC 、 one-class-SVM 与 n - SVR 中参数 n ,默认值 0.5 ;
-p e:设置n - 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加权,默认值为1;
-v n:n折交叉验证模式。
(其中-g选项中的k是指输入数据中的属性数。操作参数-v随机地将数据剖分为n部分并计算交叉检验准确度和均方根误差。以上这些参数设置可以按照SVM的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM类型中没有也不会产生影响,程序不会接收该参数,如果应有的参数设置不正确,参数将采用默认值。)
training_set_file:是要进行训练的数据集;
model_file:是训练结束后产生的模型文件,该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。
举个例子如下:
C:\libsvm-3.18\windows>svm-train.exe heart_scale
输出:

简单对屏幕回显信息进行说明:
#iter为迭代次数,
nu 与前面的操作参数-n nu 相同,
obj为SVM文件转换为的二次规划求解得到的最小值,
rho 为判决函数的常数项b,
nSV 为支持向量个数,
nBSV为边界上的支持向量个数,
Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型 Total nSV = nSV ,但是对于多类,这个是各个分类模型的 nSV 之和)。
训练后的模型保存为文件*.model,用记事本打开其内容如下:
svm_type c_svc % 训练所采用的svm类型,此处为C- SVC
kernel_type rbf %训练采用的核函数类型,此处为RBF核
gamma 0.0769231 %设置核函数中的g ,默认值为1/ k
nr_class 2 %分类时的类别数,此处为两分类问题
total_sv 132 %总共的支持向量个数
rho 0.424462 %决策函数中的常数项b
label 1 -1%类别标签
nr_sv 64 68 %各类别标签对应的支持向量个数
SV %以下为支持向量
1 1:0.166667 2:1 3:-0.333333 4:-0.433962 5:-0.383562 6:-1 7:-1 8:0.0687023 9:-1 10:-0.903226 11:-1 12:-1 13:1
0.5104832128985164 1:0.125 2:1 3:0.333333 4:-0.320755 5:-0.406393 6:1 7:1 8:0.0839695 9:1 10:-0.806452 12:-0.333333 13:0.5
1 1:0.333333 2:1 3:-1 4:-0.245283 5:-0.506849 6:-1 7:-1 8:0.129771 9:-1 10:-0.16129 12:0.333333 13:-1
1 1:0.208333 2:1 3:0.333333 4:-0.660377 5:-0.525114 6:-1 7:1 8:0.435115 9:-1 10:-0.193548 12:-0.333333 13:1
补充:采用交叉验证选择最佳参数C与g
通常而言,比较重要的参数是 gamma (-g) 跟 cost (-c) 。而 cross validation (-v)的参数常用5。那么如何去选取最优的参数c和g呢?上篇博文提到可以使用libsvm子目录下面的grid.py。
grid.py是一种用于RBF核函数的C-SVM分类的参数选择程序。用户只需给定参数的一个范围,grid.py采用交叉验证的方法计算每种参数组合的准确度来找到最好的参数。
Usage: grid.py [-log2c begin,end,step] [-log2g begin,end,step] [-v fold]
[-svmtrain pathname] [-gnuplot pathname] [-out pathname] [-png pathname]
[additional parameters for svm-train] dataset
The program conducts v-fold cross validation using parameter C (and gamma)= ^begin, ^(begin+step), ..., ^end.
示例:
python grid.py -log2c -10,10,1 -log2g 10,-10,-1 trainset.txt
这是给参数C和g设定了一个范围,且给定了变化步长,程序会在给定范围内寻找最优参数C和g。
当然也可以直接这样:
python grid.py trainset.txt
让程序自动获取最佳的C和g。常会出现的情况是:对不同的C和g,交叉验证的精度(Accuracy)常会相同。这会导致当不指定范围时,得到的C过大或过小,过大时,表示对错误例惩罚程度越大,可能到导致模型过拟合,使得在对测试集进行测试时,准确率较低。C过小时,容易欠拟合。
svm-predict.exe
用来测试训练结果的准确率。
使用方法:
svm-predict.exe[options] test_file model_file output_file
options(操作参数):
-b probability_estimates:是否需要进行概率估计预测,可选值为0或1,默认值为0。
test_file:是要进行预测的数据文件;
model_file:是由svm-train.exe产生的模型文件;
output_file:是svmpredict的输出文件,表示预测的结果值。
(注:输出结果包括均方误差(Mean squared error)和相关系数(Squared corralation coefficient)。)
例如:
./svm-predict heart_scale heart_scale.model heart_scale.out
这里显示的是结果:
Accuracy = 86.6667% (/) (classification)
以上。
libsvm下的windows版本中的工具的使用的更多相关文章
- UEFI+GPT模式下的Windows系统中分区结构和默认分区大小及硬盘整数分区研究
内容摘要:本文主要讨论和分析在UEFI+GPT模式下的Windows系统(主要是最新的Win10X64)中默认的分区结构和默认的分区大小,硬盘整数分区.4K对齐.起始扇区.恢复分区.ESP分区.MSR ...
- Windows下MySQL5.7版本中修改编码为utf-8
我们新安装的MySQL数据库默认的字符是 latin1 ,所以每次新建数据库都要修改字符,非常麻烦.所以我们必须将它改成UTF8字符的. 修改方法如下: 一.修改MySQL的my.ini 首先在 \P ...
- 关于在phpStudy环境下,windows cmd中 php不是内部命令问题
首先查看system32是否加入系统变量 其次要把当前运行的php版本的路径加入到系统变量中去,path中, 一定要是这个样子的: D:\phpStudy\php\php-5.6.27-nts 不然没 ...
- 解决“在UBUNTU下打开windows中创建的文本文件,中文显示乱码”的问题 。
在UBUNTU下打开windows中用notepad等工具创建的txt或程序源码等文本文件,中文显示乱码,原因是windows中的txt文件编码方式为GBK,UBUNTU中为utf-8. 解决办法:在 ...
- C# windows服务:C#windows服务中的Timer控件的使用
C# windows服务程序中的Timer控件的使用问题是如何解决的呢? 今天和同事一起研究了下C# windows服务程序中的Timer控件的使用的写法. 我们在建立一个C# windows服务程序 ...
- 普通windows版本安装winServer的特色功能 以dedup功能为展示点
安装 Windows 功能角色 1.选择安装源 在 Windows 8.1 系统上不存在重复数据删除功能,需要从对应的服务器版本,即 Windows Server 2012 R2 上提取相关文件. 2 ...
- 编译 Windows 版本的 Unity Mono(2017-03-12 20:59)
上一篇说了如何编译 Android 下的 mono,这里简要说下编译 windows 版本的 mono,就是 mono.dll,Unity 版本只有一个 mono.dll,官方的 mono,好几个可执 ...
- 在虚拟机linux环境下编译windows版adb fastboot
原文出自:http://blog.chinaunix.net/uid-20546441-id-1746200.html 我根据虚拟机编译遇到的问题进行一些添加 [前提条件] Linux Android ...
- 现阶段Mono版本下的WebAPI开发中存在的一些问题
背景 由于公司积极推动各业务产品服务化,得益于容器化技术的不断发展及普及,项目组的服务也更多地基于Mono,Jexus,Docker,Kubernetes等类库.容器.管理工具运行于Linux系统上. ...
随机推荐
- Chrome 开发工具之Network
经常会听到比如"为什么我的js代码没执行啊?","我明明发送了请求,为什么反应?","我这个网站怎么加载的这么慢?"这类的问题,那么问题既然 ...
- PHP 进程间通信——消息队列(msg_queue)
PHP 进程间通信--消息队列 本文不涉及PHP基础库安装.详细安装说明,请参考官网,或期待后续博客分享. 1.消息队列函数准备 <?php//生成一个消息队列的key$msg_key = ft ...
- bzoj 4326: NOIP2015 运输计划
4326: NOIP2015 运输计划 Time Limit: 30 Sec Memory Limit: 128 MB Description 公元 2044 年,人类进入了宇宙纪元.L 国有 n 个 ...
- 查看IO负载
负载(load)是linux机器的一个重要指标,直观了反应了机器当前的状态.如果机器负载过高,那么对机器的操作将难以进行. Linux的负载高,主要是由于CPU使用.内存使用.IO消耗三部分构成.任意 ...
- 美团HD(4)-二级联动效果
DJNavDropView.m #import "DJNavDropView.h" #import "DJCategory.h" #import "D ...
- 用R去做文本处理
数据说明 这是一份爬好的数据,data.frame格式.包括一些招聘信息,具体的列名和含义如下所示: 职位名称(occ_name)清洗 预览 清洗策略 需要去除无关的信息,比如符号以及数字信息 实现 ...
- 2016-WAS
http://cuisuqiang.iteye.com/blog/1936402 http://gukeming888.iteye.com/blog/1706475 dd:2016-3-28 inst ...
- CentOs 6.5 安装Ganglia步骤
一 . 说明 Ganglia由gmond.gmetad和gweb三部分组成 gmond(Ganglia Monitoring Daemon)是一种轻量级服务,安装在每台需要收集指标数据的节点主机上.g ...
- Jquery制作--循环滚动列表
自己模仿JQ插件的写法写了一个循环滚动列表插件,支持自定义上.下.左.右四个方向,支持平滑滚动或者间断滚动两种方式,都是通过参数设置.JQ里面有些重复的地方,暂时没想到更好的方法去精简.不过效果还是可 ...
- PX 和PT的区别
字体大小的设置单位,常用的有2种:px.pt.这两个有什么区别呢? 先搞清基本概念:px就是表示pixel,像素,是屏幕上显示数据的最基本的点: pt就是point,是印刷行业常用单位,等于1/72英 ...