我必须将危险材料标签(在下面的链接中给出)归类到它们的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::线性内核类型。目前,我使用每个类的大约300个样本。
发布于 2014-01-22 10:06:09
这可能是由数据分发中的问题引起的。我建议为类别1到3训练一个单独的SVM,并检查它是否有效。如果可以,您可以继续添加其他类,一次添加一个。
另一个要检查的地方是SVM参数。例如,您可以尝试CvSVM::POLY而不是CvSVM::LINEAR。
https://stackoverflow.com/questions/21269511
复制相似问题