用于OpenCV的多项式朴素贝叶斯

时间:2012-06-04 22:40:26

标签: c++ opencv naivebayes pattern-recognition

我正在寻找用 C / C ++ 编写的 Multinomial Naive Bayes分类器,用于 OpenCV

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

1 个答案:

答案 0 :(得分: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)将结束此算法

我想在您的域中,您所查找的内容与文本分类相似,但您需要提取的功能不同。