// 训练分类器
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参数优化