Opencv中的SVM参数优化

Posted

技术标签:

【中文标题】Opencv中的SVM参数优化【英文标题】:SVM parameter optimization in Opencv 【发布时间】:2014-03-22 01:00:18 【问题描述】:

我想优化 Opencv 中的 SVM 参数。但是,每次我使用train_auto 时,我都会得到C=1gamma=1。有些人使用 LibSVM,但我无法为此编写包装器。 trainingDatalabels 都取自现有代码,结果很好,因此我尝试使用 train_auto 为该代码获取相同的参数。在原始代码C=312.5gamma=0.50625。我看到有人用CvStatModel 表示python,C++ 有必要吗?我在哪里犯错? 提前致谢。

代码:

CvParamGrid CvParamGrid_C(pow(2.0,-5), pow(2.0,15), pow(2.0,2));
CvParamGrid CvParamGrid_gamma(pow(2.0,-15), pow(2.0,3), pow(2.0,2));
if (!CvParamGrid_C.check() || !CvParamGrid_gamma.check())
    cout<<"The grid is NOT VALID."<<endl;
CvSVMParams paramz;
paramz.kernel_type = CvSVM::RBF;
paramz.svm_type = CvSVM::C_SVC;
paramz.term_crit = cvTermCriteria(CV_TERMCRIT_ITER,100,0.000001);
svm.train_auto(trainingData, labels, Mat(), Mat(), paramz,10, CvParamGrid_C, CvParamGrid_gamma, CvSVM::get_default_grid(CvSVM::P), CvSVM::get_default_grid(CvSVM::NU), CvSVM::get_default_grid(CvSVM::COEF), CvSVM::get_default_grid(CvSVM::DEGREE), true);
svm.get_params();
cout<<"gamma:"<<paramz.gamma<<endl;
cout<<"C:"<<paramz.C<<endl;

【问题讨论】:

【参考方案1】:

我将代码修改如下paramz = svm.get_params(),效果很好。

【讨论】:

你试过初始参数了吗?结果如何? Tor培训花了多长时间?谢谢。

以上是关于Opencv中的SVM参数优化的主要内容,如果未能解决你的问题,请参考以下文章

paper 32 :svm参数优化的进展

基于遗传算法优化SVM参数的热负荷预测,GA-SVM回归分析

SVM预测灰狼算法优化svm支持向量机预测matlab源码

SVM预测灰狼算法优化svm支持向量机预测matlab源码

SVM预测灰狼算法优化svm支持向量机预测matlab源码

有没有办法在 One-Class SVM 上执行网格搜索超参数优化