3

NLTK Naive Bayes メソッドを使用してスパム分類器をトレーニングしました。スパム セットと非スパム セットの両方で、トレーニング中の単語のインスタンスが 20,000 あります。

未知の機能に遭遇すると、スパムの可能性がclassifierあることに気付きました:0.5

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

Laplace Smoothingこれはベイズ分類で呼ばれることを知っています。ただし、未知の機能は通常のユーザーからのものである可能性が高いため、未知の機能スパム確率を に設定したいと思います。0.4どうすればNLTKで実装できますか?

4

1 に答える 1

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
于 2013-05-28T07:46:34.397 に答える