Я использовал OpenCV SVM из этого примера http://docs.opencv.org/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html.Как проверить OpenCV SVM?
Теперь мне нужно проверить точность этого SVM для моих предсказанных значений. Это часть моего кода для прогнозирования точности SVM.
void svm(cv::Mat& trainingDataMat, cv::Mat& labelsMat, cv::Mat& Testdata) {
int t=0;
int f=0;
int Acc;
CvSVMParams params;
params.svm_type = CvSVM::C_SVC;
params.kernel_type = CvSVM::LINEAR;
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6);
CvSVM SVM;
SVM.train(trainingDataMat, labelsMat, Mat(), Mat(), params);
cv::Mat predicted(1,1, CV_32F);
for(int i = 0; i < Testdata.rows; i++) {
cv::Mat sample = Testdata.row(i);
predicted.at<float>(i,0)= SVM.predict(sample);
float p = predicted.at<float>(i,0);
if (p > 0.0) || p<0.0) {
t++;
}
else {
f++;
}
Acc=(t*1.0)/(t+f);
}
cout << "Accuracy_{SVM} = " <<Acc << endl;
}
Я пытаюсь проверить одиночные тестовые данные, в то время, и выяснить, принадлежит ли каждый столбец в строке с положительной или отрицательной стороны обучаемого классификатора и его точность предсказания.
Проблема я столкнулся с этим кодом является то, что процент предсказания всегда отображается как 100.
Я нахожу это немного странно, и хотел бы кто-то, чтобы помочь мне в этом вопросе?
Вам необходимо показать нам, – Bull