我必须将7种类别的危险物质标签(在下面的链接中给出)分类。 http://en.wikipedia.org/wiki/Dangerous_goods#Classification_and_labeling_summary_tables
我的训练功能如下:
svmTraining()
{
Mat train, response;
createTrainingDateUsingBOW(1, train, response, 1.0);
createTrainingDateUsingBOW(2, train, response, 2.0);
createTrainingDateUsingBOW(3, train, response, 3.0);
createTrainingDateUsingBOW(4, train, response, 4.0);
createTrainingDateUsingBOW(5, train, response, 5.0);
createTrainingDateUsingBOW(6, train, response, 6.0);
createTrainingDateUsingBOW(7, train, response, 7.0);
CvTermCriteria criteria = cvTermCriteria(CV_TERMCRIT_EPS, 1000, FLT_EPSILON);
CvSVMParams svm_params = CvSVMParams (CvSVM::C_SVC, CvSVM::LINEAR, 10.0, 8.0,1.0,10.0 , 0.5 , 0.1 , NULL , criteria);
}
然后我得到的结果是svmPredict(),从1到7不等。但是我得到的结果没有任何意义。他们总是在大多数时间保持在4到7之间。我试图使用SVM :: RBF和SVM :: LINEAR内核类型。目前,我正在使用每个类别约300个样本。
答案 0 :(得分:0)
这可能是由数据分发中的问题引起的。我建议为1到3级培训单独的SVM,并检查是否有效。如果可行,您可以继续一次添加其他类。
另一个需要检查的地方是SVM参数。例如,您可以尝试使用CvSVM :: POLY而不是CvSVM :: LINEAR。