【问题标题】:Multinomial Naive Bayes for OpenCVOpenCV 的多项朴素贝叶斯
【发布时间】:2012-06-09 00:04:16
【问题描述】:

我正在寻找用 C/C++ 编写的多项朴素贝叶斯分类器,用于 OpenCV

我正在寻找算法(或现成的实现),因为它会在我试图了解它的工作原理时更有帮助?

【问题讨论】:

  • Google 对这个主题有什么看法?
  • 有些东西 here,但我不确定它是否与您正在寻找的算法相同。

标签: c++ opencv naivebayes pattern-recognition


【解决方案1】:

朴素贝叶斯分类器是一种著名的分类算法。特别是在文本分类领域,我就拿来解释一下。

假设我们有一些训练文档{d1 , d2 , d3 , ... , dm},其中每个文档都可以由单词集合{w1,w2,w3, ... , wn} 表示 并且每个文档都属于一些预定义的类集(这里采用二进制大小写(c_0,c_1)) 我们的任务是将一些新的输入文档 d 分类为 c_0 类或 c_1 类。

一种直观的方法是进行最大似然估计: 也就是说,

output c_0 if P(d | c_0) > P(d | c_1) and vice versa.

所以根据我们对 d 的定义,我们可以将标准写为

P(d | c_0) = P( {w1,w2,w3...,wn}  | c_0)

因为计算这个给定类的联合概率是如此复杂。所以我们做了一个强有力的假设,即单词是相互独立的,取决于类。 所以这导致我们

P(d | c_0) = P({w1,w2,w3...,wn} | c_0) = P(w1|c_0)*P(w2|c_0)*P(w2|c_0)...*P(wn|c_0)

其中每个P(w | c) 都可以很容易地计算为 c 类中单词 w 的频率计数。

这个强大的假设是“Naive”这个名字的原因,因为我们只是天真地对每个单词进行级数乘法。

最终采用answer = argmax P(d | c_0) , P(d | c_1) 将结束此算法

我猜在您的领域中,您正在寻找的内容类似于文本分类,只是您需要提取的特征不同。

【讨论】:

    猜你喜欢
    • 2018-12-24
    • 2015-06-05
    • 2015-01-03
    • 2019-02-21
    • 2012-02-11
    • 2019-05-10
    • 2012-02-21
    • 2011-12-28
    • 2020-05-26
    相关资源
    最近更新 更多