我正在寻找用 C / C ++ 编写的 Multinomial Naive Bayes分类器,用于 OpenCV 。
我正在寻找算法(或现成的实现),因为它会更有帮助,因为我试图了解它是如何工作的?
答案 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)
将结束此算法
我想在您的域中,您所查找的内容与文本分类相似,但您需要提取的功能不同。