朴素贝叶斯的原理及python代码案例实现

一、概率论基础复习

1.1 概率定义

概率定义为一件事发生的可能性(例如:扔出一个硬币,结果头像朝上的可能性是多少)

P(X) :取值在[0,1]之间

1.2 案列:判断女神对你的喜欢情况

问题如下:

1. ⼥神喜欢的概率?
2. 职业是程序员并且体型匀称的概率?
3. 在⼥神喜欢的条件下, 职业是程序员的概率?
4. 在⼥神喜欢的条件下, 职业是程序员、 体重超重的概率?


计算结果为下:

P(喜欢) = 4/7
P(程序员, 匀称) = 1/7(联合概率)
P(程序员|喜欢) = 2/4 = 1/2(条件概率)   #在女神喜欢的条件下,找职业是程序员的
P(程序员, 超重|喜欢) = 1/4                    #在女神喜欢的条件下,找职业是程序员且超重的
 

思考题: 在小明是产品经理并且体重超重的情况下, 如何计算小明被女神喜欢的概率?
即P(喜欢|产品, 超重) = ?
此时我们需要用到朴素贝叶斯进行求解, 在讲解贝叶斯公式之前,首先复习⼀下联合概率、 条件概率和相互独立的概念。
 

1.3 联合概率、 条件概率与相互独立


联合概率: 包含多个条件, 且所有条件同时成立的概率
记作: P(A,B)
条件概率: 就是事件A在另外⼀个事件B已经发生条件下的发⽣概率
记作: P(A|B)
相互独⽴: 如果P(A, B) = P(A)P(B), 则称事件A与事件B相互独⽴。
 

二、贝叶斯公式

2.1、公式介绍

2.2、案例分析

那么思考题就可以套用贝叶斯公式这样来解决:

P(喜欢|产品, 超重) = P(产品, 超重|喜欢)P(喜欢)/P(产品, 超重)

上式中:

  • P(产品, 超重|喜欢)和P(产品, 超重)的结果均为0, 导致无法计算结果。 这是因为我们的样本量太少了, 不具有代表性。
  • 本来现实⽣活中, 肯定是存在职业是产品经理并且体重超重的⼈的, P(产品, 超重)不可能为0;
  • 而且事件“职业是产品经理”和事件“体重超重”通常被认为是相互独立的事件, 但是, 根据我们有限的7个样本计算“P(产品, 超重) = P(产品)P(超重)”不成立

而朴素贝叶斯可以帮助我们解决这个问题。

  • 朴素贝叶斯, 简单理解, 就是假定了特征与特征之间相互独立的贝叶斯公式
  • 也就是说, 朴素贝叶斯, 之所以朴素, 就在于假定了特征与特征相互独立。
     

所以, 思考题如果按照朴素贝叶斯的思路来解决, 就可以是


那么这个公式如果应⽤在⽂章分类的场景当中, 我们可以这样看:


公式可以为三部分:

如果计算两个类别概率比较:
所以我们只要比较前⾯的大小就可以, 得出谁的概率大

2.3、文章分类计算

需求: 通过前四个训练样本(⽂章) , 判断第五篇⽂章, 是否属于China类

计算结果如下:

P(C|Chinese, Chinese, Chinese, Tokyo, Japan)
=P(Chinese, Chinese, Chinese, Tokyo, Japan|C) * P(C) / P(Chinese, Chinese, Chinese, Tokyo, Japan)
= P(Chinese|C)^3 * P(Tokyo|C) * P(Japan|C) * P(C) / [P(Chinese)^3 * P(Tokyo) * P(Japan)]
# 这个⽂章是需要计算是不是China类, 是或者不是最后的分母值都相同:
# ⾸先计算是China类的概率:
P(Chinese|C) = 5/8
P(Tokyo|C) = 0/8
P(Japan|C) = 0/8
# 接着计算不是China类的概率:
P(Chinese|C) = 1/3
P(Tokyo|C) = 1/3
P(Japan|C) = 1/3
 

特征词个数是指YES和NO中不重复的词个数(Chinese 、Beijing、 Shanghai、 Macao 、Tokyo、Japan) = 8

# 这个⽂章是需要计算是不是China类:      
首先计算是China类的概率: 0.0003
P(Chinese|C) = 5/8 --> 6/14
P(Tokyo|C) = 0/8 --> 1/14
P(Japan|C) = 0/8 --> 1/14
接着计算不是China类的概率: 0.0001
P(Chinese|C) = 1/3 -->(经过拉普拉斯平滑系数处理) 2/9
P(Tokyo|C) = 1/3 --> 2/9
P(Japan|C) = 1/3 --> 2/9
结论:

因为 属于China类的概率 > 不属于China类的概率, 所以属于China类的概率。

三、案列:商品评论情感分析

3.1 api介绍

  • sklearn.naive_bayes.MultinomialNB(alpha = 1.0)

              朴素贝叶斯分类
             alpha: 拉普拉斯平滑系数
 

3.2 商品评论情感分析

3.3 分析步骤

  • 1) 获取数据
  • 2) 数据基本处理

       2.1) 取出内容列, 对数据进⾏分析
       2.2) 判定评判标准
       2.3) 选择停⽤词
       2.4) 把内容处理, 转化成标准格式
       2.5) 统计词的个数
       2.6) 准备训练集和测试集

  • 3) 模型训练
  • 4) 模型评估

3.4 代码实现

  • 1) 获取数据
     

  • 2) 数据基本处理
     

  • 3) 模型训练

  • 4) 模型评估

应用说明:https://ai.baidu.com/tech/nlp_apply/sentiment_classify

完整代码: 等打包

 

 

参考:黑马程序员课程

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值