OpenCV 随机决策森林:如何获得后验概率
Posted
技术标签:
【中文标题】OpenCV 随机决策森林:如何获得后验概率【英文标题】:OpenCV Random Decision Forest: How to get posterior probability 【发布时间】:2018-02-19 11:17:06 【问题描述】:我在多个网站上进行了研究,但找不到任何解决方案。 问题来了:
我正在使用来自 OpenCV 的 RTrees 实现逐像素分类。我需要每个班级的后验概率。我试图通过cv::ml::StatModel::predict() 得到它,但输出矩阵只包含预测值。还有其他方法可以从 RTrees 中获取后验概率吗?
PS:我对机器学习还很陌生,所以请原谅我的知识不足^^"
【问题讨论】:
【参考方案1】:您可以参考cv::ml::RTrees::getVotes 成员函数,而不是使用cv::ml::StatModel::predict。这样,在分类的情况下,您可以获得给定样本为每个类别投票的树的数量。通过将这些投票数除以森林大小,您可以获得后验概率的近似值。
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 版本的最新版本。
【讨论】:
对不起,我没有更新那个帖子,但我已经解决了,就像你描述的那样。原来这个功能是在我发帖几个月后发布的版本中引入的。无论如何,非常感谢您的帮助和详细的解释。我相信它也会对其他人非常有帮助:)以上是关于OpenCV 随机决策森林:如何获得后验概率的主要内容,如果未能解决你的问题,请参考以下文章