OpenCV SVM预测置信度有3个类别

OpenCV SVM prediction confidence with 3 classes

本文关键字:3个 SVM OpenCV      更新时间:2023-10-16

我真的需要知道我的预测的可信度,而OpenCV的SVM预测方法确实给了我"returnDFVal"的选项:

returnDFVal–指定返回值的类型。如果为真且问题是2类分类,然后该方法返回决策到边距的带符号距离的函数值,否则函数返回类标签(分类(或估计函数值(回归(。

不幸的是,我有3个类,所以这对我来说不起作用。有什么方法可以绕过这个或其他方法来确定我的预测的可信度吗?

预测概率还不可能,但有一种方法可以从幕后获得libsvm,请在这里找到我的答案。

使用opencv 3.x:

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;
}

float dist = distanceSample(yourSample);
float confidence = (1.0 / (1.0 + exp(-dist)));

PS。这只适用于2类分类。