【opencv】 svm参数说明

svm_type,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_type//核类型:

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)

degree, gamma, coef0:都是核函数的参数,具体的参见上面的核函数的方程。

C, nu, p:在一般的SVM优化求解时的参数。

class_weights:可选权重,赋给指定的类别。一般乘以C以后去影响不同类别的错误分类惩罚项。权重越大,某一类别的误分类数据的惩罚项就越大。

term_crit:SVM的迭代训练过程的中止。(解决了部分受约束二次最优问题)

该结构需要初始化,并传递给CvSVM的训练函数。

CvSVM::train

 

训练SVM

bool CvSVM::train( const CvMat*_train_data, const CvMat* _responses,

                   const CvMat* _var_idx=0,const CvMat* _sample_idx=0,

                   CvSVMParams_params=CvSVMParams() );

训练SVM 模型的方法。它遵循的泛型训练"方法"的约定具有以下限制:仅支持 CV_ROW_SAMPLE 的数据布局、所有命令输入的变量、输出变量可以是断然(_params.svm_type=CvSVM::C_SVC 或_params.svm_type=CvSVM::NU_SVC)或命令 (_params.svm_type=CvSVM::EPS_SVR或 _params.svm_type=CvSVM::NU_SVR) 或不需要在所有(_params.svm_type=CvSVM:: ONE_CLASS),不支持缺省值。所有的参数都被集成在CvSVMParams这个结构中。

CvSVM::get_support_vector*

得到支持矢量和特殊矢量的数

int CvSVM::get_support_vector_count()const;

const float* CvSVM::get_support_vector(inti) const;

这个方法可以被用来得到支持矢量的集合。

你可能感兴趣的:(OPENCV)