C++ 三类OpenCV-SVM预测置信度
我真的需要知道我的预测的可信度,OpenCV的SVM预测方法确实给了我选择“”: returnDFVal–指定返回值的类型。如果是真的,那么 问题是2类分类,然后该方法返回决策 函数值,该值是到边距的有符号距离,否则 函数返回类标签(分类)或估计的函数 价值(回归) 不幸的是,我有3门课,所以这对我不适用。是否有任何方法可以绕过此方法或其他方法来确定预测的可信度?使用opencv 3.x:C++ 三类OpenCV-SVM预测置信度,c++,opencv,machine-learning,svm,C++,Opencv,Machine Learning,Svm,我真的需要知道我的预测的可信度,OpenCV的SVM预测方法确实给了我选择“”: returnDFVal–指定返回值的类型。如果是真的,那么 问题是2类分类,然后该方法返回决策 函数值,该值是到边距的有符号距离,否则 函数返回类标签(分类)或估计的函数 价值(回归) 不幸的是,我有3门课,所以这对我不适用。是否有任何方法可以绕过此方法或其他方法来确定预测的可信度?使用opencv 3.x: float distanceSample(cv::Mat &sample) { a
float distanceSample(cv::Mat &sample)
{
assert(svm != NULL && svm->isTrained());
assert(!sample.empty());
cv::Mat result;
svm->predict(sample, result, cv::ml::StatModel::Flags::RAW_OUTPUT);
float dist = result.at<float>(0, 0);
return dist;
}
注:这只适用于2类分类。预测概率还不可能,但有一种方法可以从引擎盖下得到它
libsvm
,请找到我的答案。你有没有想过如何做这样的事情?没有,最后我用深度学习lib库解决了这个问题,它处理像素和图像的2D性质,并给了我一个置信区间。
float dist = distanceSample(yourSample);
float confidence = (1.0 / (1.0 + exp(-dist)));