如何在SVM.predict之后计算置信度?
%YAML:1.0
my_svm: !!opencv-ml-svm
svm_type: EPS_SVR
kernel: { type:LINEAR }
C: 1.0000000000000001e-001
p: 1.0000000000000001e-001
term_criteria: { epsilon:9.9999999747524271e-007, iterations:1000 }
var_all: 10000
var_count: 10000
sv_total: 1
support_vectors:
- [ 1.55572503e-004, 1.84632663e-004, 4.96124958e-005,
-2.17121196e-005, -2.92743789e-005, 7.10865497e-005,
9.92513524e-005, 3.12738739e-005, 1.05619969e-004,
1.52145614e-004, 6.48323912e-005, 1.48814761e-005,
2.78663483e-005, -4.44514626e-005, -1.67053367e-004,
-2.43851537e-006, -1.06875894e-004, -3.03472800e-004,
-3.82891594e-004 ]
decision_functions:
-
sv_count: 1
rho: -1.4309503841001982e+001
alpha: [ 1. ]
答案 0 :(得分:0)
OpenCV中的SVM不会让您对预测有信心。也许你会在C ++和OpenCV上尝试libsvm。
由于您在训练后只有一个支持向量,您也可以尝试自己计算信心。
(1)w = alpha * yn * xn其中xn是训练输出文件中的支持向量,
(2)yn *(w'* xn + b)= 1来解决b。
(3)用你的测试样本x_new,svm.predict给你分类(+或 - 1)计算为符号(w·x + b)。通过查看| w·x + b |获得置信度。任何大于1的值意味着SVM对该点有合理的肯定,而任何小的值都意味着它不是。