gpt4 book ai didi

c++ - Opencv中的SVM参数优化

转载 作者:可可西里 更新时间:2023-11-01 18:36:55 33 4
gpt4 key购买 nike

我想在 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;

最佳答案

我修改了代码如下 paramz = svm.get_params() 并且它工作正常。

关于c++ - Opencv中的SVM参数优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21918747/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com