由于对SVM不甚了解,但是项目里用到了,就先把都有哪些参数搞清楚。
1. svm_type:svm类型,使用 setType() 进行设置,有以下几种。Default value is SVM::C_SVC.
enum Types {
C_SVC=100,
NU_SVC=101,
ONE_CLASS=102,
EPS_SVR=103,
NU_SVR=104
};
2. Gamma: POLY, RBF,SIGMOID ,CHI2核函数的参数,setGamma(),Default value is 1。
3. coef0: POLY or SIGMOID 核函数的参数,setCoef0() ,Default value is 0。
4. Degree:POLY 核函数的参数, Default value is 0。
5. C: C_SVC, EPS_SVR ,NU_SVR 类型的SVM的参数,Default value is 0。
6. Nu: NU_SVC, ONE_CLASS , NU_SVR 类型SVM的参数,Default value is 0。
7. P:EPS_SVR 类型svm的参数 epsilon,Default value is 0。
8. ClassWeights : C_SVC SVM中的可选权重,默认是一个empty Mat。setClassWeights(const cv::Mat &val)
9. TermCriteria : 迭代svm训练过程的终止准则,解决了约束二次优化问题的局部情形(机翻)。
Default value is TermCriteria( TermCriteria::MAX_ITER + TermCriteria::EPS, 1000, FLT_EPSILON )
可以设置的三个参数是
int type; //!< the type of termination criteria: COUNT, EPS or COUNT + EPS
int maxCount; // the maximum number of iterations/elements
double epsilon; // the desired accuracy
10. Kernel: 核函数类型, 有两种初始化方式:
(1)setKernel(),使用SVM::KernelTypes中的核函数,Default value is SVM::RBF;
(2)setCustomKernel(),使用自定义内核,Initialize with custom kernel, See SVM::Kernel class for implementation details */
核函数的类型
enum KernelTypes {
CUSTOM=-1,
LINEAR=0,
POLY=1,
RBF=2,
CHI2=4,
INTER=5
};