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

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

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

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

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


慕标5832272
浏览 176回答 1
1回答

哔哔one

我找到了一种解决此问题的非常简单的方法。我选择了12,000个垃圾邮件帐户和18,000个普通帐户来重新训练朴素贝叶斯分类器。垃圾邮件帐户和普通帐户的比例为0.4 / 0.6。因此,当分类器收到训练集的未知特征时,它的垃圾邮件概率为0.4:In [23]: classifier.prob_classify({'unknown_words': True}).prob('spam')Out[23]: 0.40000333322222587
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python