opencv-ios开发笔记12 svm参数设置和自动优选

时间:2022-08-27 23:34:58

 // 训练分类器
Ptr<TrainData> tData = TrainData::create(trainData, ROW_SAMPLE, trainLabels);

// 创建分类器并设置参数
/*
//K值邻近
Ptr<KNearest> model =KNearest::create();
model->setDefaultK(3);
model->setIsClassifier(true);
*/

//支持向量机
Ptr<SVM> model =SVM::create();
model->setType(SVM::C_SVC);
model->setKernel(SVM::LINEAR); //核函数

model->setC(0.1);
model->setGamma(1.0);
model->setP(0.0);

cout << endl << "当前参数 C:"<< model->getC() << " G:"<< model->getGamma() << " P:"<< model->getP() <<endl ;

// 训练分类器
model->train(tData) ;
//自动优化
// if( model->trainAuto(tData)){
// cout << endl << "优化后参数 C:"<< model->getC() << " G:"<< model->getGamma() << " P:"<< model->getP() <<endl ;
// }


经测试 准确率比只用svm的默认c、g、p参数提高了10%,说明这个自动参数优化还是有点用。 如果用opencv2的svm,可以参考文章:OpenCV中的SVM参数优化