我已经使用NLTK朴素贝叶斯方法训练了垃圾邮件分类器。垃圾邮件集和非垃圾邮件集都有20,000个单词实例在训练中。我注意到,当遇到未知功能时,就会classifier给它0.5带来垃圾邮件的可能性:>>> print classifier.prob_classify({'unkown_words':True}).prob('spam')
0.5我知道这Laplace Smoothing在贝叶斯分类中被称为。但是,我想将未知功能的垃圾邮件概率设置为0.4,因为未知功能更可能来自正常用户。如何使用NLTK实施它?
1 回答
哔哔one
TA贡献1854条经验 获得超8个赞
我找到了一种解决此问题的非常简单的方法。
我选择了12,000个垃圾邮件帐户和18,000个普通帐户来重新训练朴素贝叶斯分类器。垃圾邮件帐户和普通帐户的比例为0.4 / 0.6。
因此,当分类器收到训练集的未知特征时,它的垃圾邮件概率为0.4:
In [23]: classifier.prob_classify({'unknown_words': True}).prob('spam')
Out[23]: 0.40000333322222587
添加回答
举报
0/150
提交
取消