svm训练显示信息说明
现简单对屏幕回显信息进行说明:
#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训练显示信息说明的更多相关文章
- libsvm的安装,数据格式,常见错误,grid.py参数选择,c-SVC过程,libsvm参数解释,svm训练数据,libsvm的使用详解,SVM核函数的选择
直接conda install libsvm安装的不完整,缺几个.py文件. 第一种安装方法: 下载:http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm. ...
- 11月10日下午 ajax做显示信息以后用ajax、Bootstrp做弹窗显示信息详情
1.用ajax做弹窗显示信息详情 nation.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...
- 关于MySQL相关的查看显示信息:
关于MySQL相关的查看显示信息: 数据库范围: 一.查看所有的数据库:(仅仅是看数据库数量与名字) mysql> show databases; 二.查看某个数据库的创建信息:(主要看数据库的 ...
- Hu矩SVM训练及检测-----OpenCV
关键词:Hu矩,SVM,OpenCV 在图像中进行目标物识别,涉及到特定区域内是否存在目标物,SVM可在样本量较少情况下对正负样本(图片中前景背景)做出良好区分,图片基本特征包括诸如HOG.LBP.H ...
- WinForm LED循环显示信息,使用定时器Threading.Timer
原文:WinForm LED循环显示信息,使用定时器Threading.Timer 这里用一个示例来演示timer如何使用.示例:LED屏幕显示描述:这个示例其实很简单,LED屏幕上显示3个信息: ...
- Linux编程 20 shell编程(shell脚本创建,echo显示信息)
一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1 使用多个命令 Shell ...
- 通过纯真IP地址实现根据用户地址显示信息
为了实现中关村在线商品报价中通过用户的地理位置信息显示相应的报价. 示例地址:http://detail.zol.com.cn/lens/index224693.shtml 现把我做的使用asp.ne ...
- [jQuery] 通过ajax保存到服务器,成功显示信息.
保存数据到服务器,成功时显示信息. jQuery 代码: $.ajax({ type: "POST", url: "some.php", data: " ...
- android-eclips中logcat不显示信息的问题解决
time:2015/11/20 1. logcat窗口不显示问题 解决: 参考[1] 2. logcat中不显示信息 (1)红米手机 (2)解决问题 * 有些文章提到重启eclipse,或者重启手机. ...
随机推荐
- hammer用法 jquery.hammer.js
jquery.hammer.js使用时要先引入hammer.min.js 下面代码是滑动效果: $("#nav").hammer().bind('swiperight', fu ...
- php图片验证码为什么必须加上ob_clean();才能正常显示。
ob_clean这个函数的作用就是用来丢弃输出缓冲区中的内容,如果你的网站有许多生成的图片类文件,那么想要访问正确,就要经常清除缓冲区. If you work on an extremely lar ...
- (转)SqlServer索引及优化详解(1)
(一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚 ...
- jQuery弹出关闭遮罩层
效果体验:http://keleyi.com/keleyi/phtml/jquery/9.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XH ...
- [deviceone开发]-一个固定列,可以上下左右滑动的表格示例
一.简介 一个类型table的例子,第一列和第二列可以固定,剩下的后面的很多列都可以左右滑动,也可以上下滑动,这种需求一般是为了展示多列表格数据.这个例子是通过二大部分: 左边是一个普通的listvi ...
- window搭建webpack,react,babel傻瓜教程
首先现在的webpack教程已经很多了,写这篇的原因是因为自己在从小白开始的搭建过程中,并没有找到比较好的教程,花费了很多的时间,so 有了这篇博客,方便小白同学学习. node环境在这里不在赘述,p ...
- ArcGIS工具之ET GeoWizards、GeoTools、GeoTools
简介 ET GeoWizards是ET SpatialTechniques一套基于ArcGIS的工具集,从2002年开始,其设计的初衷: (1)让ArcView用户拥有ArcEditor甚至ArcIn ...
- How to Operate SharePoint User Alerts with PowerShell
When you migrate list or site, the user alerts in the site will not be migrated together with the co ...
- iOS之常用宏定义
下面我为大家提供一些常用的宏定义! 将这些宏定义 加入到.pch使用 再也不用 用一次写一次这么长的程序了 //-------------------获取设备大小------------------- ...
- app:clean classes Exception
Error:Execution failed for task ':app:clean'.> Unable to delete directory: C:\Users\LiuZhen\Deskt ...