OpenCV中SVM的参数具体怎么设置,哪位大侠能详细讲解一下?

OpenCV中SVM的参数具体怎么设置,哪位大侠能详细讲解一下?,第1张

CvSVMParams::CvSVMParams() :

svm_type(CvSVM::C_SVC), kernel_type(CvSVM::RBF), degree(0),

gamma(1), coef0(0), C(1), nu(0), p(0), class_weights(0)

SVM种类:CvSVM::C_SVC C_SVC该类型可以用于n-类分类问题 (n>=2),其重要特征是它可以处理非完美分类

的问题 (及训练数据不可以完全的线性分割)。它是最常被使用的SVM类型。

CvSVM::C_SVC - n(n>=2)分类器,允许用异常值惩罚因子C进行不完全分类。

CvSVM::NU_SVC - n类似然不完全分类的分类器。参数nu取代了c,其值在区间【0,1】中,nu越大,决策边界越平滑。

CvSVM::ONE_CLASS - 单分类器,所有的训练数据提取自同一个类里,然後SVM建立了一个分界线以分割该类在特征空间中所占区域和其它类在特征空间中所占区域。

CvSVM::EPS_SVR - 回归。 训练集中的特征向量和拟合出来的超平面的距离需要小于p。异常值惩罚因子C被采用。

CvSVM::NU_SVR - 回归;nu 代替了p

Kernel的种类:

CvSVM::LINEAR - 表示不需要进行映射,没有任何向映射至高维空间,线性区分(或回归)在原始特征空间中被完成,这是最快的选择。 d(x,y) = x?y == (x,y)

CvSVM::POLY - 多项式核: d(x,y) = (gamma*(x?y)+coef0)degree

CvSVM::RBF - 径向基,对于大多数情况都是一个较好的选择:d(x,y) = exp(-gamma*|x-y|2)

CvSVM::SIGMOID - sigmoid函数被用作核函数: d(x,y) = tanh(gamma*(x?y)+coef0)

CvSVM::RBF,貌似比 CvSVM::LINER 正确率高

degree:内核函数(POLY)的参数degree。

10.0(此次不使用)

gamma:内核函数(POLY/ RBF/ SIGMOID)的参数\gamma。

8.0

coef0:内核函数(POLY/ SIGMOID)的参数coef0

1.0(此次不使用)

C:Cvalue – SVM类型(C_SVC/ EPS_SVR/ NU_SVR)的参数C。

10.0

nu: SVM类型(NU_SVC/ ONE_CLASS/ NU_SVR)的参数 \nu。

0.5(此次不使用)

p:SVM类型(EPS_SVR)的参数 \epsilon。

0.1(此次不使用)

class_weights: – C_SVC中的可选权重,赋给指定的类,乘以C以后变成 class_weight_si * C。所以这些权重影响不同类别的错误分类惩罚项。权重越大,某一类别的误分类数据的惩罚项就越大。

term_crit: – SVM的迭代训练过程的中止条件,解决部分受约束二次最优问题。您可以指定的公差和/或最大迭代次数。

然后对训练数据正规化处理,并放在CvMat型的数组里。

Help on function svm_train in module svmutil:

svm_train(arg1, arg2=None, arg3=None)

svm_train(y, x [, options]) ->model | ACC | MSE

svm_train(prob [, options]) ->model | ACC | MSE

svm_train(prob, param) ->model | ACC| MSE

Train an SVM model from data (y, x) or an svm_problem prob using

'options' or an svm_parameter param.

If '-v' is specified in 'options' (i.e., cross validation)

either accuracy (ACC) or mean-squared error (MSE) is returned.

options:

-s svm_type : set type of SVM (default 0)

0 -- C-SVC (multi-class classification)

1 -- nu-SVC (multi-class classification)

2 -- one-class SVM

3 -- epsilon-SVR(regression)

4 -- nu-SVR (regression)

-t kernel_type : set type of kernel function (default 2)

0 -- linear: u'*v

1 -- polynomial: (gamma*u'*v + coef0)^degree

2 -- radial basis function: exp(-gamma*|u-v|^2)

3 -- sigmoid: tanh(gamma*u'*v + coef0)

4 -- precomputed kernel (kernel values in training_set_file)

-d degree : set degree in kernel function (default 3)

-g gamma : set gamma in kernel function (default 1/num_features)

-r coef0 : set coef0 in kernel function (default 0)

-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)

-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)

-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)

-m cachesize : set cache memory size in MB (default 100)

-e epsilon : set tolerance of termination criterion (default 0.001)

-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)

-b probability_estimates : whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)

-wi weight : set the parameter C of class i to weight*C, for C-SVC (default 1)

-v n: n-fold cross validation mode

-q : quiet mode (no outputs)

Options:可用的选项即表示的涵义如下

-s svm类型:SVM设置类型(默认0)

0 -- C-SVC

1 --v-SVC

2 – 一类SVM

3 -- e -SVR

4 -- v-SVR

-t 核函数类型:核函数设置类型(默认2)

0 – 线性:u'v

1 – 多项式:(r*u'v + coef0)^degree

2 – RBF函数:exp(-r|u-v|^2)

3 –sigmoid:tanh(r*u'v + coef0)

-d degree:核函数中的degree设置(针对多项式核函数)(默认3)

-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/ k)

-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)

-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)

-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)

-p p:设置e -SVR 中损失函数p的值(默认0.1)

-m cachesize:设置cache内存大小,以MB为单位(默认40)

-e eps:设置允许的终止判据(默认0.001)

-h shrinking:是否使用启发式,0或1(默认1)

-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)

-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2

其中-g选项中的k是指输入数据中的属性数。option -v 随机地将数据剖分为n部分并计算交互检验准确度和均方根误差。以上这些参数设置可以按照SVM的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。

目录

1、SVM(Support Vector Machines)原理

2、SVM参数/属性/接口详解

3、总结

1、SVM原理

2、SVC参数列表:

SVM属性列表

SVC的接口列表

3、总结: 本文主要介绍了SVM原理中的各种概念,软硬间隔,以及惩罚系数C、核函数的各种参数gamma,coef0和degree,解决样本不均衡的参数class_weight,解决多分类问题的参数decision_function_shape,控制概率的参数probability,控制计算内存的参数cache_size,属性主要包括调用支持向量的属性support_vectors_和查看特征重要性的属性coef_。接口中,介绍了最核心的decision_function。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11393432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存