3

我已经使用 NLTK 朴素贝叶斯方法训练了一个垃圾邮件分类器。垃圾邮件集和非垃圾邮件集都有 20,000 个单词在训练中的实例。

我注意到,当遇到未知功能时,classifier它会0.5产生垃圾邮件的可能性:

>>> print classifier.prob_classify({'unkown_words':True}).prob('spam')
0.5

我知道这Laplace Smoothing在贝叶斯分类中被称为。但是,我想将未知特征的垃圾邮件概率设置0.4因为未知特征更可能来自普通用户。如何使用 NLTK 实现它?

4

1 回答 1

1

我找到了一种非常简单的方法来解决这个问题。

我选择了 12,000 个垃圾邮件帐户和 18,000 个正常帐户来重新训练朴素贝叶斯分类器。垃圾账户与普通账户的比例为 0.4 / 0.6。

因此,当分类器接收到训练集的未知特征时,它给出 0.4 的垃圾邮件概率:

In [23]: classifier.prob_classify({'unknown_words': True}).prob('spam')
Out[23]: 0.40000333322222587
于 2013-05-28T07:46:34.397 回答