本文主要基于《机器学习实战》朴素贝叶斯章节进行的,
问题:有一封邮件如何判定这个邮件是不是垃圾邮件? 假定我们已经有了好几封邮件的训练材料,同时做出了是否垃圾的分类。
解决:P(邮件是垃圾邮件|邮件包含某个词汇集合)*P(邮件包含词汇集合)
= P(某个词汇集合set |垃圾邮件)*P(垃圾邮件)= P(word1|垃圾邮件)* P(word2|垃圾邮件)….*P(wordN|垃圾邮件)*P(垃圾邮件)
上面这个等式主要有两个部分
P(word1|垃圾邮件):通过已有的垃圾邮件训练集,我们可以计算这个word1在垃圾邮件词汇集合所占的频率,这就是我们要的值。
P(垃圾邮件): 我们可以通过计算垃圾邮件所占整个训练邮件集合的比例可以得到,比如训练集有5个email,3个是junkEmail,那么垃圾概率0.6。
用email的例子来讲,就这这样操作的。
from numpy import *
# load training dataset
#添加数据集,
#加载包含5条短的message训练文本,及其对应是否垃圾邮件的分类结果
def loadDataSet():
trainMessages=[
['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],
['maybe', 'not', 'take