使用OpenCV获取多类分类中的SVM分类分数

pow*_*der 5 c++ opencv svm

我正在开发一个项目,我在OpenCV中使用SVM进行多类分类.

我的目标是获得分类的置信度分数以及预测的等级.我怎样才能做到这一点?现在我正在做类似的事情

float result = mysvm.predict(sample);
Run Code Online (Sandbox Code Playgroud)

拥有相当多的课程,我宁愿避免做很多一对一的分类,然后计算分数.

由于OpenCV SVM是使用LibSVM实现的,我很确定有一种方法可以做到这一点,但是查看http://docs.opencv.org/modules/ml/doc/support_vector_machines.html并没有真正帮助.

感谢您提供的任何输入.

sca*_*p3y 3

opencv/include/opencv2/ml/ml.hpp中,有一个名为CvSVMDecisionFunc的结构。它已在第 546 行中用作受保护变量

CvSVMDecisionFunc* decision_func;
Run Code Online (Sandbox Code Playgroud)

您需要做的是剪切该行并将其粘贴为Public,然后完全重建 OpenCV。这个变量,decision_func包含特定支持向量的所有数据(即 alpha 和 rho 值)。

  • 好吧,由于我失去了足够的时间来尝试找到更好的方法来做到这一点,所以我已经按照建议进行了操作,并重建了我的 OpenCV,将决策函数结构设置为公开。不过,我在理解它的价值时遇到了一些困难。我有 `- rho: -0.9667...` `- sv_count: 1` `- alpha: {1.00...}` `- sv_index: 0` 不完全符合我的预期..我不应该有很多支持向量是我用于分类的类的数量? (2认同)
  • @powder你可以避免重建OpenCV。由于“decision_func”受到保护,您可以扩展“CvSVM”类并从扩展类访问该变量。这种方式比较好。 (2认同)