四 学习Opencv2.4.9---SVM支持向量机( 二 )



gamma,
coef0,

nu,
p,
CvMat* ,

方法如果不传自定义参数会按如下代码进行默认初始化:
::() : (CvSVM::C_SVC), (CvSVM::RBF), (0),
gamma(1), coef0(0), C(1), nu(0), p(0), (0)
= ( +, 1000,);
:SVM的内核类型(4种):
上面已经介绍过了就不再多说了 。
:指定SVM的类型(5种):
1、CvSVM::C_SVC : C类支撑向量分类机 。n类分组 (n≥2),容许用异常值处罚因子C进行不完全分类 。
2、CvSVM:: : 类支撑向量分类机 。n类似然不完全分类的分类器 。参数为庖代C(其值在区间【0,1】中,nu越大,决定计划鸿沟越腻滑) 。
3、CvSVM:: : 单分类器,所有的练习数据提取自同一个类里,然后SVM建树了一个分界线以分别该类在特点空间中所占区域和其它类在特点空间中所占区域 。
4、CvSVM:: : 类支撑向量回归机 。练习集中的特点向量和拟合出来的超平面的间隔须要小于p 。异常值处罚因子C被采取 。
5、CvSVM:: : 类支撑向量回归机 。庖代了 p 。
:内核函数(POLY)的参数 。
gamma:内核函数(POLY/ RBF/ )的参数 。
coef0:内核函数(POLY/ )的参数coef0 。
:SVM类型(C_SVC/ / )的参数C 。
nu:SVM类型(/ / )的参数。
p:SVM类型()的参数 。
:C_SVC中的可选权重,赋给指定的类,乘以C今后变成。所以这些权重影响不合类此外错误分类处罚项 。权重越大,某一类此外误分类数据的处罚项就越大 。
:SVM的迭代练习过程的中断前提,解决项目组受束缚二次最优题目 。您可以指定的公差和/或最大迭代次数 。
中SVM训练函数:
CvSVM::train(const CvMat* ,
const CvMat* ,
const CvMat* =0,
const CvMat* =0,
=()

1、: 练习数据,必须是 (32位浮点类型,单通道) 。数据必须是的,即特点向量以行来存储 。
2、: 响应数据,凡是是1D向量存储在 (仅仅用在分类题目上)或者格局 。
3、: 指定感爱好的特点 。可所以整数(32sC1)向量,例如以0为开端的索引,或者8位(8uC1)的应用的特点或者样本的掩码 。用户也可以传入NULL指针,用来默示练习中应用所有变量/样本 。
4、: 指定感爱好的样本 。描述同上 。
5、: SVM参数 。
中的SVM识别(预言)函数:
的预言函数所有重载如下:
float CvSVM::(const Mat& , bool =false ) const
float CvSVM::(const CvMat* , bool =false ) const
float CvSVM::(const CvMat* , CvMat* ) const
1、: 须要猜测的输入样本 。
2、: 须要猜测的输入样本们 。
3、: 指定返回值类型 。若是值是true,则是一个2类分类题目,该办法返回的决定计划函数值是边沿的符号间隔 。
4、: 响应的样本输出猜测的响应 。
这个函数用来猜测一个新样本的响应数据() 。
在分类题目中,这个函数返回类别编号;在回归题目中,返回函数值 。
输入的样本必须与传给的练习样本同样大小 。
若是练习中应用了参数,必然记住在函数中应用跟练习特点一致的特点 。
中SVM分类问题代码流程:
(1)获得练习样本及制作其类别标签(,)
(2)设置练习参数()
(3)对SVM进行训练(CvSVM::train)
(4)对新的输入样本进行猜测(CvSVM::),并输出结果类型(对应标签)
(5)获取支撑向量(CvSVM::ount,CvSVM:: )
SVM多类分类问题的几种方法:
目前,构造SVM多类分类器的方法主要有两类:一类是直接法,直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”实现多类分类 。这种方法看似简单,但其计算复杂度比较高,实现起来比较困难,只适合用于小型问题中;另一类是间接法,主要是通过组合多个二分类器来实现多分类器的构造,常见的方法有one--one和one--all两种 。