svm使用的一般步骤
LIBSVM 使用的一般步骤是:
1)准备数据集,转化为 LIBSVM支持的数据格式 :
[label] [index1]:[value1] [index2]:[value2] ...
即 [l类别标号] [特征1]:[特征值] [特征2]:[特征值] ...
2)对数据进行简单的缩放操作(scale);(为什么要scale,这里不解释了)
3)考虑选用核函数(通常选取径函数,程序默认);
4)采用交叉验证(一般采用5折交叉验证),选择最佳参数C与g ;
5)用得到的最佳参数C与g 对整个训练集进行训练得到SVM模型;
6)用得到的SVM模型进行测试
Libsvm 是一个简单的,易用的,高效的SVM分类和回归软件。它解决了 C-SVM 分类,nu-SVM 分类,
one-class-SVM,epsilon-SVM 回归,nu-SVM 回归(的问题)。它也提供了一个自动的 C-SVM 分类的模型选择工具。本文档解释了 Libsvm 的用法。
目录:
=======================
- 快速开始
- 安装与数据格式
- 使用 ‘svm-train’
- 使用 ‘svm-predict’
- 使用 ‘svm-scale’
- 实际应用的小贴士
- 例子
- 自定义核函数
- 库的使用
- Java 版本
- 编译 Windows 二进制文件
- 附加工具:Sub-sampling, Parameter Selection, Format checking, 等
- MATLAB/OCTAVE 接口
- Python 接口
- 补充
快速开始
=======================
如果你刚接触 SVM 并且数据不大,安装完毕之后请用 ‘tools' 文件夹下的 easy.py。它自动做好所有的事情——从数据缩放到参数选择。
安装和数据格式
=======================
在 Unix 系统中,键入 ‘make’ 编译 ‘svm-train’ 和 ‘smv-predict’ 程序。运行程序时不设参数可以显示它们的用法。
每一行包括一个实例(样本)并以 ‘\n’ 字符结束。对于分类,<label> 是一个整型数据,表示一个分类标签(支持多类分类)。对于回归,<label> 是一个可以为任意实数的目标值。对于 one-class SVM,它不被使用,所以可取任意值。一对 <index>:<value> 提供一个特征(属性)值:<index> 是从 1 开始的整型数据,<value> 是一个实数。唯一的例外是自定义核函数,<index> 从 0 开始;参见自 ‘定义核函数’ 部分。Indices 必须是单调增的顺序。测试文件中的 Labels 仅仅用于计算精度或误差。如果它们是未知量,只需在第一列任意填一个数。
这是一个缩放输入数据文件的工具(其实就是把属性值归一化)。
svm-toy:
这是一个简单的图形接口,它用一个平面展示 SVM 怎样将数据分开。你可以在窗口内点击来画出一些数据点,使用 ‘change’ 按钮来选择类别 1,2,3(即,最多支持三个类别),‘load’ 按钮用来载入文件中的数据,‘save’ 按钮用来保存数据到一个文件,‘run’ 按钮用来得到一个 SVM 模型,‘clear’ 按钮来清空窗口。
你需要 GTK+ 库来编译 GTK 版本。从 http://www.gtk.org 获取。
使用‘svm-train’
=======================
用法:svm-train [options] training_set_file [model_file]
options:
-s svm_type:设定SVM类型(默认为0)
-t kernel_type:设定核函数类型(默认为2)
-d degree:设定核函数的 degree 值(默认为 3)
-g gamma:设定核函数的 gamma 值(默认为 1/k)
-r coef0:设定核函数的 coef0 值(默认为 0)
-c cost:设定 C-SVC,epsilon-SVR,nu-SVR 的参数惩罚因子C值(默认为 1)
-g 选项中的的 k 为输入数据的属性数量。
-v 选项随机截取数据为 n 个部分,计算它们的交叉验证的精度或者均方误差。
关于输出的意义,参阅libsvm FAQ。
使用‘svm-predict’
用法:svm-predict [options] test_file model_file output_file
使用‘svm-scale’
=======================
=======================
> svm-scale -l -1 -u 1 -s range train > train.scale
缩放训练数据的每个特征值在 [-1,1] 内(训练数据文件为 train,缩放后的数据为 train.scale),缩放因子(就是一些参数)被存储在 range 文件中然后被用于缩放测试数据(测试数据文件为test,缩放后的数据为test.scale)。
> svm-train -s 0 -c 5 -t 2 -g 0.5 -e 0.1 data_file
用 RBF核函数 exp(-0.5|u-v|^2) 训练(data_file文件)得到一个分类器,C=10,终止允差为0.1。
用 线性核函数 u'v 解决 SVM 回归(问题),损失函数中 epsilon=0.1。
自定义核函数
=======================
svm使用的一般步骤的更多相关文章
- cs231n笔记:线性分类器
cs231n线性分类器学习笔记,非完全翻译,根据自己的学习情况总结出的内容: 线性分类 本节介绍线性分类器,该方法可以自然延伸到神经网络和卷积神经网络中,这类方法主要有两部分组成,一个是评分函数(sc ...
- Struck: Structrued Output Tracking with Kernels 论文笔记
Main idear Treat the tracking problem as a classification task and use online learning techniques to ...
- 斯坦福《机器学习》Lesson8感想-------1、SMO
从上一篇文章可知支持向量(supervector)就是指的离分隔超平面近期的那些点.整个SVM最须要的步骤是训练分类器.得到alpha,从而得到整个用于数据分类的分隔超平面.支持向量机(super v ...
- CNN结构:用于检测的CNN结构进化-分离式方法
前言: 原文链接:基于CNN的目标检测发展过程 文章有大量修改,如有不适,请移步原文. 参考文章:图像的全局特征--用于目标检测 目标的检测和定位中一个很困难的问题是,如何从数以万计的候选 ...
- 13 opencv训练器
https://blog.csdn.net/WZZ18191171661/article/details/91305466 https://blog.csdn.net/qq_25352981/arti ...
- Spark-Bench 测试教程
Spark-Bench 教程 本文原始地址:https://sitoi.cn/posts/19752.html 系统环境配置 操作系统:centos7 环境要求:安装 JDK, Hadoop, Spa ...
- 目标检测从入门到精通—R-CNN详细解析(二)
R-CNN目标检测详细解析 <Rich feature hierarchies for Accurate Object Detection and Segmentation> Author ...
- Machine Learning读书会,面试&算法讲座,算法公开课,创业活动,算法班集锦
Machine Learning读书会,面试&算法讲座,算法公开课,创业活动,算法班集锦 近期活动: 2014年9月3日,第8次西安面试&算法讲座视频 + PPT 的下载地址:http ...
- SVM 实践步骤
主要公式步骤: 原距离问题的函数: 1.将SVM的距离问题转化为拉格朗日函数: 2.原函数问题化成如下问题: 3.对各非拉格朗日参数求偏导来求min值: 4.将上面 令各偏导等于0 的结果带回 拉 ...
随机推荐
- 【开源】SoDiaoEditor 可能是目前最好用的开源电子病历编辑器(B/S架构)
此刻我的内心是忐忑的,这个标题给了我很大的压力,虽然很久以前我就在github上搜索一圈了,也没发现有其他更好的开源电子病历编辑器,如各位亲发现有更好的,烦请知会我一声. 该编辑器其实已经憋了很久了, ...
- php实现hack中的Shape特性
用php进行静态类型编程,估计是我的一个心结. 依次有几篇文章都记录了我的一些探索: 通过指定函数/方法形参类型提高PHP代码可靠性 http://www.cnblogs.com/x3d/p/4285 ...
- SQLServer并发问题,先SELECT后UPDATE,避免并发脏读情况解决
在SQL Server中,需要对数据操作进行先SELECT 之后UPDATE,对于这样的操作,如果出现高并发,可能导致脏读情况的发生.不能保证数据的同步. 解决方案是在事物中对表进行加更新锁: 事务一 ...
- Spring Boot中静态资源(JS, 图片)等应该放在什么位置
Spring Boot的静态资源,比如图片应该放在什么位置呢, 如果你放在传统WEB共的类似地方, 比如webapp或者WEB-INF下,你会得到一张示意文件未找到的破碎图片.那应该放哪里呢? 百度一 ...
- 深入研究Java类装载机制
目录 1.为什么要研究java类装在机制? 2.了解类装载机制,对于我们在项目开发中有什么作用? 3.装载实现细节. 4.总结 一.为什么药研究Java类装载机制 java类加载机制,便于我们使用自定 ...
- Java的关键字与标识符
Java作为一门编程语言,与其他语言一样,有字符集.标识符.和关键字.变量.常量.语句等编程语言的基本要素. 1.关键字 abstract boolean break byte case catch ...
- IEEE829-2008软件测试文档标准介绍
1998版中定义了一套文档用于8个已定义的软件测试阶段: 测试计划: 一个管理计划的文档 包括: 测试如何完成 (包括SUT的配置). 谁来做测试 将要测试什么 测试将持续多久 (虽然 ...
- jqGrid几个需要注意的默认设置
jqGrid中的option属性设置中,几乎每个属性都会给出默认值,然而,有些默认值实在有些坑爹,导致在使用过程中,如果没有注意到而使用了默认值,就会出现一些问题. height:是指jqGrid表格 ...
- 【webapp的优化整理】要做移动前端优化的朋友进来看看吧
单页or多页 本文仅代表个人观点,不足请见谅,欢迎赐教. webapp 小钗从事单页相关的开发一年有余,期间无比的推崇webapp的网站模式,也整理了很多移动开发的知识点,但是现在回过头来看,weba ...
- cocos2dx骨骼动画Armature源码分析(三)
代码目录结构 cocos2dx里骨骼动画代码在cocos -> editor-support -> cocostudio文件夹中,win下通过筛选器,文件结构如下.(mac下没有分,是整个 ...