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

#iter 为迭代次数,

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

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

rho  为判决函数的常数项 b 

nSV  为支持向量个数,

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

Total 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

4 )采用交叉验证选择最佳参数 C 与 g

通常而言,比较重要的参数是  gamma (-g)  跟  cost (-c)  。而  cross validation (-v)

的参数常用 5 。那么如何去选取最优的参数 c 和 g 呢? libsvm  的  python  子目录下面的  grid.py  可以帮助我们。   此时。其中安装 python2.5 需要(一般默认安装到 c:/python25

下),将 gnuplot 解压。安装解压完毕后,进入 /libsvm/tools 目录下,用文本编辑器(记事

本, edit 都可以)修改 grid.py 文件,找到其中关于 gnuplot 路径的那项(其默认路径为

gnuplot_exe=r"c:/tmp/gnuplot/bin/pgnuplot.exe" ),根据实际路径进行修改,并保存。然

后,将 grid.py 和 C:/Python25 目录下的 python.exe 文件拷贝到 libsvm/windows 目录下,键入以下命令: $ python grid.py train.1.scale  执行后,即可得到最优参数 c 和 g 。

另外,至于下 libsvm 和 python 的接口的问题,在 libsvm2.86 中林老师已经帮助我们解决,在/libsvm/windows/python 目录下自带了 svmc.pyd 这个文件,将该文件文件复制到

libsvm/python 目录下,同时,也将 python.exe 文件复制到该目录下,键入以下命令以检验效

果(注意: .Py 文件中关于 gnuplot 路径的那项路径一定要根据实际路径修改):

python svm_test.py

如果能看到程序执行结果,说明 libsvm 和 python 之间的接口已经配置完成,以后就可以直接在python 程序里调用 libsvm 的函数了!

5 )   采用最佳参数 C 与 g  对整个训练集进行训练获取支持向量机模型

$ svmtrain –c x –g x –v x training_set_file [model_file]

x 为上述得到的最优参数 c 和 g 的值, v 的值一般取 5 。

6 )利用获取的模型进行测试与预测

使用 Svmtrain 训练好的模型进行测试。输入新的 X 值,给出 SVM 预测出的 Y 值

$ Svmpredict   test_file   model_file   output_file

如: ./svm-predict heart_scale  heart_scale.model  heart_scale.out

Accuracy = 86.6667% (234/270) (classification)

这里显示的是结果

一个具体使用的例子。

以 libsvm 中的 heart_scale 作为训练数据和测试数据,同时已经将 python 安装至 c 盘,并将grid.py 文件中关于 gnuplot 路径的默认值修改为实际解压缩后的路径,将

heart_scale 、 grid.py 和 python.exe 拷贝至 /libsvm/windows 文件夹下。

./svm-train heart_scale

optimization finished, #iter = 162

nu = 0.431029

obj = -100.877288, rho = 0.424462

nSV = 132, nBSV = 107

Total nSV = 132

此时,已经得到 heart_scale.model ,进行预测:

./svm-predict heart_scale   heart_scale.model   heart_scale.out

Accuracy = 86.6667% (234/270) (classification)

正确率为 Accuracy = 86.6667% 。

./python grid.py heart_scale

得到最优参数 c=2048 , g=0.0001220703125.

./svm-train -c 2048 -g 0.0001220703125 heart_scale 得到 model 后,由 ./svm-predict heart_scale  heart_scale.model heart_scale.out 得到的正确

率为 Accuracy = 85.1852%.这块还有点迷惑?为什么正确率降低了?

当然也可以结合subset.py 和 easy.py 实现自动化过程。

如果要训练多次,可以写个批处理程序省好多事。

这里举个例子:

::@ echo off
cls
:: split the data and output the results
for /L %%i in (1,1,1000) do python subset.py b59.txt 546 b59(%%i).in8 b59(%%i).out2

for /L %%i in (1,1,1000) do python easy.py b59(%%i).in8 b59(%%i).out2 >> result89.txt

这段批处理代码首先调用subset.py对文件b59.txt执行1000次分层随机抽样(对数据进行80-20%分割)然后调用easy.py 进行1000次参数寻优,把记录结果写到result89.txt中

(包括1000次训练的分类准确率和参数对)。

还可以调用fselect.py进行特征选择,调用plotroc.py进行roc曲线绘制。

先写到这里吧,希望能和大家一起学习libsvm,进一步学好svm。

svm训练显示信息说明的更多相关文章

  1. libsvm的安装,数据格式,常见错误,grid.py参数选择,c-SVC过程,libsvm参数解释,svm训练数据,libsvm的使用详解,SVM核函数的选择

    直接conda install libsvm安装的不完整,缺几个.py文件. 第一种安装方法: 下载:http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm. ...

  2. 11月10日下午 ajax做显示信息以后用ajax、Bootstrp做弹窗显示信息详情

    1.用ajax做弹窗显示信息详情 nation.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  3. 关于MySQL相关的查看显示信息:

    关于MySQL相关的查看显示信息: 数据库范围: 一.查看所有的数据库:(仅仅是看数据库数量与名字) mysql> show databases; 二.查看某个数据库的创建信息:(主要看数据库的 ...

  4. Hu矩SVM训练及检测-----OpenCV

    关键词:Hu矩,SVM,OpenCV 在图像中进行目标物识别,涉及到特定区域内是否存在目标物,SVM可在样本量较少情况下对正负样本(图片中前景背景)做出良好区分,图片基本特征包括诸如HOG.LBP.H ...

  5. WinForm LED循环显示信息,使用定时器Threading.Timer

    原文:WinForm LED循环显示信息,使用定时器Threading.Timer 这里用一个示例来演示timer如何使用.示例:LED屏幕显示描述:这个示例其实很简单,LED屏幕上显示3个信息:  ...

  6. Linux编程 20 shell编程(shell脚本创建,echo显示信息)

    一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1    使用多个命令 Shell ...

  7. 通过纯真IP地址实现根据用户地址显示信息

    为了实现中关村在线商品报价中通过用户的地理位置信息显示相应的报价. 示例地址:http://detail.zol.com.cn/lens/index224693.shtml 现把我做的使用asp.ne ...

  8. [jQuery] 通过ajax保存到服务器,成功显示信息.

    保存数据到服务器,成功时显示信息. jQuery 代码: $.ajax({ type: "POST", url: "some.php", data: " ...

  9. android-eclips中logcat不显示信息的问题解决

    time:2015/11/20 1. logcat窗口不显示问题 解决: 参考[1] 2. logcat中不显示信息 (1)红米手机 (2)解决问题 * 有些文章提到重启eclipse,或者重启手机. ...

随机推荐

  1. 图解DataGridView编辑列

    WinForm中DataGridView功能强大,除了可以自动绑定数据源外,还可以根据需求编辑列.下面以截图说明添加编辑列的步骤(HoverTreeSCJ 项目实际界面). 1.选择DataGridV ...

  2. C# 发送Http请求 - WebClient类

    WebClient位于System.Net命名空间下,通过这个类可以方便的创建Http请求并获取返回内容. 一.用法1 - DownloadData string uri = "http:/ ...

  3. python中global 和 nonlocal 的作用域

    python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 . 一 global global关键字用来在函数或其他局部作用域 ...

  4. python 优矿自动化交易

    一.进入官网,打开notebook 自己新建 notebook 二.在代码中编写自己的交易策略 https://uqer.io/help/faqApi/#account相关属性  在帮助文档中可以找到 ...

  5. windows 下使用Nginx替代apache作为服务器

    说实话, 在windows下使用Nginx 着实有点不太方便, 但因项目需求, 又不想换系统(虽然可以搞个虚拟机玩), 只能用Nginx了 好了, 不多说了. 开始... 首先我用的是xampp包(A ...

  6. HotCode的原理及使用

    1. JRbel介绍 JRebel是一套JavaEE开发工具.Jrebel可快速实现热部署,节省了大量重启时间,提高了个人开发效率.网上可搜索到破解版.JRebel是一款JAVA虚拟机插件,它使得JA ...

  7. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

  8. javascript中BOM部分基础知识总结

    一.什么是BOM      BOM(Browser Object Document)即浏览器对象模型.      BOM提供了独立于内容 而与浏览器窗口进行交互的对象:      由于BOM主要用于管 ...

  9. mysql环境搭建

    最近决定学习数据库,在比较了各个数据库之后,选择从mysql入手,主要原因: 开源 成熟,通用 用户量多,社区完善 入门简单 下载安装 mysql的官网下载地址:http://dev.mysql.co ...

  10. JavaScript基本语法(三)

    上篇博文说到JS的运算符,这次说说JS程序流程控制. 1. 条件语句 if 语法: if(condition) statements1 else statement2 当括号里的条件成立的时候,执行i ...