设为首页 收藏本站
查看: 1686|回复: 1

[经验分享] libsvm下的windows版本中的工具的使用

[复制链接]

尚未签到

发表于 2017-6-29 23:07:58 | 显示全部楼层 |阅读模式
  下载的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可以在画布上画点:
DSC0000.png

  点击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
  输出:
DSC0001.png

  简单对屏幕回显信息进行说明:

  #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)= 2^begin, 2^(begin+step), ..., 2^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% (234/270) (classification)
  以上。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389458-1-1.html 上篇帖子: Oracle 11gR2_database的windows下的安装 下篇帖子: windows 7 下elasticsearch5.0 安装head 插件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表