Вопрос по opencv, c++, svm – Получите балл по классификации SVM в мультиклассовой классификации с OpenCV

5

Я работаю над проектом, где я делаю мультиклассовую классификацию с SVM в OpenCV.

Моя цель - получить оценку достоверности классификации и прогнозируемого класса. Как я могу это сделать? Прямо сейчас я делаю что-то вроде

float result = mysvm.predict(sample);

Имея довольно большое количество классов, я предпочитаю избегать проведения множества однозначных классификаций, а затем вычислять баллы.

Поскольку OpenCV SVM реализован с использованием LibSVM, я вполне уверен, что есть способ сделать это, но, глядя наhttp://docs.opencv.org/modules/ml/doc/support_vector_machines.html не очень помогает

Спасибо за любой предоставленный вклад.

Ваш Ответ

1   ответ
3

ВOpenCV / включать / opencv2 / мл / ml.hppесть структура под названиемCvSVMDecisionFunc.. Он был использован влиния 546 какЗащищенная переменная,

CvSVMDecisionFunc* decision_func;

Что вам нужно сделать, это вырезать эту строку и вставить ее какобщественного а затем сделать полную перестройку OpenCV .. Эта переменная,decision_func содержит все данные для определенных векторов поддержки (то есть, значения альфа и rho) ..

Хорошо, так как я потерял достаточно времени, пытаясь найти лучший способ сделать это, я сделал так, как предлагалось, и перестроил свой OpenCV, установив структуру функции принятия решений для public. У меня есть некоторые трудности с пониманием его ценностей, хотя. у меня есть- rho: -0.9667... - sv_count: 1 - alpha: {1.00...} - sv_index: 0 Не совсем то, что я ожидал ... разве у меня не должно быть числа опорных векторов, которое является числом классов, которые я использую для классификации? powder
Ну, я не знаю, как использоватьreturnDFVal для мультиклассовой проблемы. Взяв во вниманиеsv_count, Ты прав; оно должно соответствовать количеству уроков (в данном случае метки, которые вы предоставляете на этапе обучения SVM). В общем, я стараюсь использовать-1,0 для отрицательных выборок и одиночных положительных поплавков для остальных. scap3y
Это выглядит довольно радикально, я сделаю это, если не смогу найти другой способ решения своей проблемы. Я видел этоbool returnDFVal=false вpredict() funcion делает то, что мне нужно, но только для двоичной классификации. Нет способа получить его для мультиклассовой классификации? powder
@powder Вы можете избежать перестройки OpenCV. посколькуdecision_func защищен, вы можете продлитьCvSVM класс и доступ к этой переменной из расширенного класса. Этот способ лучше. nimcap

Похожие вопросы