【问题标题】:OpenCV Random Decision Forest: How to get posterior probabilityOpenCV 随机决策森林:如何获得后验概率
【发布时间】:2018-02-19 11:17:06
【问题描述】:

我在多个网站上进行了研究,但找不到任何解决方案。 问题来了:

我正在使用来自 OpenCV 的 RTrees 实现逐像素分类。我需要每个班级的后验概率。我试图通过cv::ml::StatModel::predict() 得到它,但输出矩阵只包含预测值。还有其他方法可以从 RTrees 中获取后验概率吗?

PS:我对机器学习还很陌生,所以请原谅我的知识不足^^"

【问题讨论】:

    标签: c++ opencv machine-learning classification random-forest


    【解决方案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 版本的最新版本。

    【讨论】:

    • 对不起,我没有更新那个帖子,但我已经解决了,就像你描述的那样。原来这个功能是在我发帖几个月后发布的版本中引入的。无论如何,非常感谢您的帮助和详细的解释。我相信它也会对其他人非常有帮助:)
    猜你喜欢
    • 2017-03-15
    • 2019-08-31
    • 2016-01-28
    • 2014-01-20
    • 2021-12-04
    • 2016-06-01
    • 1970-01-01
    • 2021-03-24
    • 2017-04-30
    相关资源
    最近更新 更多