我在多个网站上进行了研究,但找不到任何解决方案。 问题是:
我正在使用 OpenCV 中的 RTrees 实现像素级分类。我需要每个类别的后验概率。我试图通过 cv::ml::StatModel::predict() 获取它,但输出矩阵只包含预测值。有没有其他方法可以从 RTree 中获取后验概率?
PS:我对机器学习还是很陌生,所以请原谅我的知识不足^^”
最佳答案
而不是使用 cv::ml::StatModel::predict , 你可以引用 cv::ml::RTrees::getVotes成员函数。这样,在分类的情况下,您可以获得为给定样本的每个类投票的树的数量。通过将这些票数除以森林大小,您可以获得后验概率的近似值。
getVotes
函数应该这样调用而不是 predict
:
cv::Mat samples = [one or multiple samples (their feature vectors)]
cv::Mat votes;
classifier.getVotes(sample, votes, 0);
// provide 0 here unless you would like to manipulate with RTrees flags
您应该注意的是,votes
矩阵将比样本数多一行。第一行列出了您的类(如果我从 OpenCV 源代码中记得清楚的话,按升序排列)。
答案是最新的 OpenCV 3.4.1 版本。
关于c++ - OpenCV 随机决策森林 : How to get posterior probability,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46151886/