C++ OpenCv3.0.0中支持向量机预测的置信度

C++ OpenCv3.0.0中支持向量机预测的置信度,c++,visual-studio-2013,svm,opencv3.0,predict,C++,Visual Studio 2013,Svm,Opencv3.0,Predict,我用一个程序对道路信号进行分类,我想得到预测的置信度在0-1之间。 嗯,我试着计算置信度并将其与概率进行比较,但这不起作用,因为有图像表示(exp 60 Km/h),其速率低于0.9,而另一个(也表示60 Km/h)的速率更高,为0.9 但同样的事情在未识别的流量歌唱中重复:有些图像不代表流量歌唱,其速率小于0.9,而另一些图像的速率大于0.9。 我试过这个 decision = svmob.predict(testData, true); confidence = 1.0 / (1.0 + e

我用一个程序对道路信号进行分类,我想得到预测的置信度在0-1之间。 嗯,我试着计算置信度并将其与概率进行比较,但这不起作用,因为有图像表示(exp 60 Km/h),其速率低于0.9,而另一个(也表示60 Km/h)的速率更高,为0.9

但同样的事情在未识别的流量歌唱中重复:有些图像不代表流量歌唱,其速率小于0.9,而另一些图像的速率大于0.9。 我试过这个

decision = svmob.predict(testData, true);
confidence = 1.0 / (1.0 + exp(-decision));
我发现了,但它在OpenCv3.0中不起作用。 你能帮帮我吗

然后我尝试了这个:

 int classObject = decision.at<float>(currentFile) < 0.0 ? 1 : -1;
    float confidence = classObject == -1 ? (1.0 / (1.0 + exp(-decision.at<float>(currentFile)))) : (1.0 - (1.0 / (1.0 + exp(-decision.at<float>(currentFile)))));
    if(confidence<0.9)
        printf("le panneau n'est pas reconnu");
    else
        printf("decision = %f, response = %f\n",
        decision.at<float>(0), response);
int classObject=decision.at(当前文件)<0.0?1 : -1;
浮动置信度=类对象==-1?(1.0/(1.0+exp(-decision.at(currentFile))):(1.0-(1.0/(1.0+exp(-decision.at(currentFile))));
if(confidence)在opencv3.0中,我们应该使用接口predict(p,noArray(),cv::ml::StatModel::RAW_OUTPUT)。它的效果与opencv2.4中的predict(p,true)相同
Opencv文档解释接口:C++:float StatModel::predict(输入阵列样本,输出阵列结果=noArray(),int flags=0)const
参数:
样本–输入样本,浮点矩阵
结果–结果的可选输出矩阵


flags–可选标志,依赖于模型。一些模型,如Boost、SVM识别StatModel::RAW_输出标志,使方法返回原始结果(总和),而不是类标签。使用
cv::Mat results;float response=SVM->predict(sample.t(),results,cv::ml::StatModel::RAW_输出)
只产生
0
作为返回值和与
float response=svm->predict(sample)相同的类索引;
作为
results
中的唯一条目。你知道怎么做吗?