如何改变NLTK中朴素贝叶斯分类器的平滑方法?

时间:2013-05-27 10:29:55

标签: python machine-learning nltk bayesian smoothing

我使用NLTK Naive Bayes方法训练了垃圾邮件分类器。垃圾邮件集和非垃圾邮件集在培训中都有20,000个单词实例。

我注意到,当遇到未知功能时,classifier会给出0.5垃圾邮件的概率:

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

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

1 个答案:

答案 0 :(得分: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