2013-05-27 2 views
3

Я подготовил классификатор спама с использованием метода NLTK Наивный Байес. Набор спама, а не спам, содержит 20 000 экземпляров слов в процессе обучения.Как изменить метод сглаживания классификатора Naive Bayes в 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 обычных учетных записей для повторного обучения классификатору Naive Bayes. Доля спама и обычных счетов составляет 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- this-underlying-comput-that-this)? – modarwish

Смежные вопросы