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

#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

采用交叉验证选择最佳参数 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 的函数了!

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

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

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

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

使用 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. python sklearn svm 模型训练后的参数说明

    在调用sklearn的SVM时,如果设置verbose=True,模型训练结束后会显示一些训练过程的说明信息,如下(以下是OCSVM的返回结果): * optimization finished, # ...

  2. 谷歌大规模机器学习:模型训练、特征工程和算法选择 (32PPT下载)

    本文转自:http://mp.weixin.qq.com/s/Xe3g2OSkE3BpIC2wdt5J-A 谷歌大规模机器学习:模型训练.特征工程和算法选择 (32PPT下载) 2017-01-26  ...

  3. Scikit-Learn 机器学习笔记 -- 模型训练

    Scikit-Learn 机器学习笔记 – 模型训练 参考文档: handson-ml import numpy as np from matplotlib import pyplot as plt# ...

  4. SVM学习(一)SVM模型训练与分类

    SVM模型训练与分类 支持向量机(SVM): 一个能够将不同类样本在样本空间分隔的超平面.换句话说,给定一些标记好的训练本(监督式学习),SVM算法输出一个最优化的超分隔平面.本次利用VS2015+O ...

  5. opencv C++ SVM模型训练与分类实现

    最近想学习一下分类算法的内容,恰好opencv有SVM的函数,故先从这个下手.找了许多资料,发现要么是opencv2.3的,要么就没有具体实现代码,学习还是把代码与原理一起结合来看比较好. 其中,我主 ...

  6. 机器学习_XGB模型训练内存溢出解决方案

    在我们的机器学习任务之中,当数据量非常之大的时候.我们会在两个地方遇到内存溢出的情况. 数据读取与处理 模型训练 之前笔者有写过数据读取与处理解决内存溢出的相关处理方案(核心是用生成器分批处理) 可以 ...

  7. 睁闭眼状态检测——SVM模型训练

    前言 svm训练模型相当简单,难的是提取特征这一步,这里介绍了一个睁闭眼检测功能从提取特征到预测的全过程. 首先,需要准备数据,我这里有睁眼和闭眼的照片各3000张,传统的机器学习方法都需要提取特征, ...

  8. 机器学习之模型训练(二)皮马印第安人糖尿病数据集

    1. 数据说明: Pima Indians Diabetes Data Set(皮马印第安人糖尿病数据集) 根据现有的医疗信息预测5年内皮马印第安人糖尿病发作的概率. 数据链接:https://arc ...

  9. 混淆矩阵评价指标_机器学习:模型训练和评估——分类效果的评价

    图 | 源网络文 | 5号程序员 分类模型建立好后,这个模型到底符不符合要求要怎么评判呢? 事实上是有评价标准的. 要评价模型在测试集上预测结果的好坏,可以使用Sklearn库中的metrics模块方 ...

最新文章

  1. 设计一个百万级的消息推送系统
  2. 【汇总篇】如何利用Excel高效地处理数据
  3. oracle中调试存储过程,详解Oracle调试存储过程
  4. Acwing 252. 树 点分治
  5. 铜仁计算机专业学校,听说计算机专业的在本部啊 这是真的么
  6. pytorch数据加载时报错OSError: [Errno 22] Invalid argument
  7. Java ByteArrayOutputStream size()方法与示例
  8. 20135310陈巧然家庭作业汇总[3.56 3.67 6.23 6.39.6.40 6.41]
  9. asp.net ajax 源码,asp.net+jquery+ajax简单留言板 v1.2
  10. HTTP/2特性及其在实际应用中的表现
  11. 【sklearn第三讲】数据预处理
  12. eclipse版本号 备注
  13. 简单的物流项目实战,WPF的MVVM设计模式(二)
  14. windows powershell 没有vi_「PowerShell」人人都值得学一点PowerShell实现自动化(2)
  15. Exchange 2016与国内版O365混合部署(4):配置Exchange 公网证书
  16. 思辨与立场阅读笔记-02 成为你自己思维的批判家
  17. NEFU 262 贪吃的九头龙(树形背包,4级)
  18. Unity插入视频音频
  19. 传奇手游战神引擎开服教程架设教程工具全套图文教程
  20. 厚积薄发 臻于至善,用友U9 cloud“王者归来”

热门文章

  1. 2008北京奥运会志愿者用语
  2. 如何画出干净流畅的手绘线稿,把握好这些技巧对你很有帮助!
  3. tinker热修复gradle接入,app软件开发课程
  4. [转] 浅谈脱壳中的附加数据问题(overlay)
  5. 【IoT】 产品设计之结构设计:PMMA(亚克力)板、PC耐力板、PS有机板与MS板区别
  6. 关于Windows的特殊文件夹
  7. java实现QQ互联登录
  8. VR家装丨颠覆传统,让家装谈单更轻松
  9. java实现频繁项集_java实现Apriori算法——频繁项集的计算
  10. Allegro添加Mark点完整步骤