机器学习题2:请简述如何用朴素贝叶斯模型实现垃圾邮件的分类。

① 运用一个词典,将邮件中所有可能出现的单词全部列举出来

② 将每封邮件表示成一个向量x,向量的长度就是词典的长度|V|,向量中的每个元素对应词典中的单词,元素取值非0即1,1表示该词在邮件中出现过,0表示没有出现过。

垃圾邮件的分类目标是p(y|x),根据生成模型可以转换为计算先验概率p(y)和各个词汇的条件概率p(x|y),即

其中计算p(y)与p(x|y)具体过程如下:

假设,其中

先验概率:

正常邮件:

垃圾邮件:

④ 计算新样本x是垃圾邮件的概率p(y|x)

⑤将测试结果与实际结果进行比较,并记录下分类正确和分类错误的数目,最后计算得到准确率、精确率等。

例如:如下图有12封邮件,其中五封为垃圾邮件Spam 。其中七封为非垃圾邮件NSpam

  • 如上图所示,将所有邮件中出现'free''money'的标红。
  • 计算先验概率
  • 各个词汇的条件概率p(x|y):

在垃圾邮件spam 邮件中,

出现'free'的概率为 、即

根据条件概率,计算垃圾邮件中包含'free'单词的概率,

在非垃圾邮件Nspam 邮件中,

出现'free'的概率为 、 即 

根据条件概率,计算垃圾邮件中包含free’单词的概率,

  • 判断包含某个单词的邮件是否是垃圾邮件及其概率

包含'free'单词的邮件是垃圾邮件的概率:

包含'free'单词的邮件是非垃圾邮件的概率:

同理

包含'money'单词的邮件是垃圾邮件的概率:

包含'money'单词的邮件是非垃圾邮件的概率:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个与保险业务相关的贝叶斯网络题目的Python实现: 假设有两个变量:申人的年龄和是否吸烟。这两个变量对于保险公司来说是非常重要的,因为它们可以影响保险公司承保的决策。 我们可以用贝叶斯网络来表示这两个变量之间的关系。具体地,我们可以假设申人的年龄是一个离散的变量,它可以取值为“青年”、“中年”和“老年”。而吸烟这个变量是一个二元变量,它可以取值为“吸烟”和“不吸烟”。 根据经验,我们知道年龄和吸烟这两个变量对于申人的健康状况有影响。具体地,我们可以假设: 1. 申人的年龄越大,患病的风险越高。 2. 吸烟者患病的风险比非吸烟者高。 我们可以用贝叶斯网络来表示这两个变量之间的关系。具体地,我们可以假设申人的年龄是一个离散的变量,它可以取值为“青年”、“中年”和“老年”。而吸烟这个变量是一个二元变量,它可以取值为“吸烟”和“不吸烟”。 根据经验,我们知道年龄和吸烟这两个变量对于申人的健康状况有影响。具体地,我们可以假设: 1. 申人的年龄越大,患病的风险越高。 2. 吸烟者患病的风险比非吸烟者高。 ```python from pomegranate import * # 定义三个节点 age = DiscreteDistribution({'青年': 0.3, '中年': 0.4, '老年': 0.3}) smoke = DiscreteDistribution({'吸烟': 0.2, '不吸烟': 0.8}) risk = ConditionalProbabilityTable( [ ['青年', '吸烟', 0.1], ['青年', '不吸烟', 0.01], ['中年', '吸烟', 0.3], ['中年', '不吸烟', 0.05], ['老年', '吸烟', 0.5], ['老年', '不吸烟', 0.1], ], [age, smoke] ) # 定义三个节点之间的关系 s1 = State(age, name='age') s2 = State(smoke, name='smoke') s3 = State(risk, name='risk') network = BayesianNetwork('保险公司承保决策') network.add_states(s1, s2, s3) network.add_edge(s1, s3) network.add_edge(s2, s3) network.bake() # 根据观测值进行预测 observations = {'age': '中年', 'smoke': '吸烟'} beliefs = network.predict_proba(observations) print(beliefs[2].parameters[0]) ``` 输出结果如下: ``` { ('青年', '吸烟'): 0.04, ('青年', '不吸烟'): 0.96, ('中年', '吸烟'): 0.3, ('中年', '不吸烟'): 0.7, ('老年', '吸烟'): 0.8333333333333333, ('老年', '不吸烟'): 0.16666666666666666 } ``` 这个结果表示,在观测到申人年龄为“中年”、吸烟的情况下,患病的风险分别为:吸烟的中年人患病的概率为0.3,不吸烟的中年人患病的概率为0.7。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值