2013-05-27 4 views
3

J'ai formé un classificateur de spam en utilisant la méthode NLTK Naive Bayes. Le jeu de spams et le jeu de spams comportent tous deux 20 000 instances de mots en formation.Comment changer la méthode de lissage du classificateur Naive Bayes en NLTK?

J'ai remarqué que lors de la rencontre une des caractéristiques inconnues, l'classifier il donne 0.5 probabilité de spam:

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

Je sais que cela est appelé Laplace Smoothing dans la classification de Bayes. Cependant, je veux placer la probabilité de courrier indésirable de unknown features à 0.4, parce que les caractéristiques inconnues sont plus probablement des utilisateurs normaux. Comment puis-je l'implémenter avec NLTK?

Répondre

1

J'ai trouvé un moyen très simple de résoudre ce problème.

J'ai sélectionné 12 000 comptes de spam et 18 000 comptes normaux pour recycler le classificateur de Naive Bayes. La proportion de comptes de spam et de comptes normaux est de 0,4/0,6.

Ainsi, lorsque le classificateur reçoit une caractéristique inconnue de l'ensemble de la formation, il donne 0,4 probabilité de spam:

In [23]: classifier.prob_classify({'unknown_words': True}).prob('spam') 
Out[23]: 0.40000333322222587 
+0

avez-vous trouvé un moyen de découvrir des NLTK bayésiens naïfs fait un calcul? Pouvez-vous répondre [cette question] (http://stackoverflow.com/questions/27897591/python-nltk-naive-bayes-classifier-what-is-the-underlying-computation-that-this)? – modarwish

Questions connexes