BayesSpam
python实现基于贝叶斯的简单垃圾邮件分类
在400封邮件(正常邮件与垃圾邮件各一半)的测试集中测试结果为分类准确率95.15%,在仅仅统计词频计算概率的情况下,分类结果还是相当不错的。
1、准备工作
python3.4开发环境;
结巴分词工具:
2、贝叶斯公式
我们要做的是计算在已知词向量$w=(w_1,w_2,...,w_n)$的条件下求包含该词向量邮件是否为垃圾邮件的概率,即求:
$P(s|w),w=(w_1,w_2,...,w_n)$
其中,$s$表示分类为垃圾邮件
根据贝叶斯公式和全概率公式,
$P(s|w_1,w_2,...,w_n)$
$=\frac {P(s,w_1,w_2,...,w_n)}{P(w_1,w_2,...,w_n)}$
$=\frac {P(w_1,w_2,...,w_n|s)P(s)}{P(w_1,w_2,...,w_n)}$
$=\
1