2013-05-27 33 views
3

我已經使用NLTK樸素貝葉斯方法訓練了垃圾郵件分類器。垃圾郵件集和非垃圾郵件集都有20,000個訓練詞。如何更改NLTK中樸素貝葉斯分類器的平滑方法?

我已經注意到了,遇到一個未知的功能時,該classifier給它0.5概率垃圾郵件:

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

我知道,這就是所謂的貝葉斯分類Laplace Smoothing。但是,我想將垃圾概率unknown features設置爲0.4,因爲未知特徵更可能來自正常用戶。我如何使用NLTK實現它?

回答

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 
+0

你找到一個方法來找出NLTK樸素貝葉斯做了計算?你能回答[這個問題](http://stackoverflow.com/questions/27897591/python-nltk-naive-bayes-classifier-what-is-the-underlying-computation-that-this)? – modarwish