朴素贝叶斯的基本算法和高斯混合朴素贝叶斯算法

2. 朴素贝叶斯原理

朴素贝叶斯算法基于贝叶斯定理和特征条件独立假设

  • 贝叶斯定理
  • 特征条件独立:特征条件独立假设?X的?n个特征在类确定的条件下都是条件独立的。大大简化了计算过程,但是因为这个假设太过严格,所以会相应牺牲一定的准确率。这也是为什么称呼为朴素的原因

4.1 朴素贝叶斯的主要优点

  1. 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率
  2. 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。
  3. 对缺失数据不太敏感,算法也比较简单,常用于文本分类。

4.2 朴素贝叶斯的主要缺点

  1. 朴素贝叶斯模型的特征条件独立假设在实际应用中往往是不成立的
  2. 如果样本数据分布不能很好的代表样本空间分布,那先验概率容易测不准。
  3. 对输入数据的表达形式很敏感。

详细案例

算法杂货铺——分类算法之朴素贝叶斯分类

http://uml.org.cn/sjjmwj/201310221.asp

实现朴素贝叶斯的基本算法和高斯混合朴素贝叶斯算法

实战项目代码下载:

关注微信公众号 datanlp 然后回复 贝叶斯 即可获取下载链接。

class NaiveBayesBase(object):

def __init__(self):

pass

def fit(self, trainMatrix, trainCategory):

'''

朴素贝叶斯分类器训练函数,求:p(Ci),基于词汇表的p(w|Ci)

Args:

trainMatrix : 训练矩阵,即向量化表示后的文档(词条集合)

trainCategory : 文档中每个词条的列表标注

Return:

p0Vect : 属于0类别的概率向量(p(w1|C0),p(w2|C0),...,p(wn|C0))

p1Vect : 属于1类别的概率向量(p(w1|C1),p(w2|C1),...,p(wn|C1))

pAbusive : 属于1类别文档的概率

'''

numTrainDocs = len(trainMatrix)

# 长度为词汇表长度

numWords = len(trainMatrix[0])

# p(ci)

self.pAbusive = sum(trainCategory) / float(numTrainDocs)

# 由于后期要计算p(w|Ci)=p(w1|Ci)*p(w2|Ci)*...*p(wn|Ci),若wj未出现,则p(wj|Ci)=0,因此p(w|Ci)=0,这样显然是不对的

# 故在初始化时,将所有词的出现数初始化为1,分母即出现词条总数初始化为2

p0Num = np.ones(numWords)

p1Num = np.ones(numWords)

p0Denom = 2.0

p1Denom = 2.0

for i in range(numTrainDocs):

if trainCategory[i] == 1:

p1Num += trainMatrix[i]

p1Denom += sum(trainMatrix[i])

else:

p0Num += trainMatrix[i]

p0Denom += sum(trainMatrix[i])

# p(wi | c1)

# 为了避免下溢出(当所有的p都很小时,再相乘会得到0.0,使用log则会避免得到0.0)

self.p1Vect = np.log(p1Num / p1Denom)

# p(wi | c2)

self.p0Vect = np.log(p0Num / p0Denom)

return self

本文分享自微信公众号 - 机器学习入门与实战(datanlp)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

亿级学术图谱 Open Academic Graph 更新至 2.0 版本:包含约 7 亿实体数据、20 亿关系

AI 科技评论按:继 2017 年 8 月份首度联合发布开放学术图谱(Open Academic Graph, OAG),近日,清华大学和微软研究院再度携手将 ...

9020
来自专栏有三AI

【NLP-ChatBot】能闲聊的端到端生成型聊天机器人背后都有哪些技术?

我们之前介绍过,按照应用场景的不同,聊天机器人可以分为问答系统,对话系统以及闲聊机器人三类。今天我们就来详细讲一讲其中的生成型闲聊机器人。

14030
来自专栏AI科技评论

学界 | AAAI 牵头示范如何正确地给中小学生教人工智能

这些挖苦主要可以归为两类。第一类挖苦在于,即便以深度学习为代表的现代「人工智能」相关技术和工作持续火热,读博读硕申请火爆,国内外高校也在陆续设立人工智能专业和学...

9550
来自专栏AI科技评论

业界 | 怎么把 GPU 上训练的模型转到 TPU 或者 CPU 上去?DeepMind 发布新工具支招

雷锋网 AI 科技评论按:DeepMind 有一支专门的科研平台团队(the Research Platform Team),他们的职责是为 AI 学术研究构建...

8430
来自专栏SimpleAI

机器学习算法Code Show——决策树

上一篇文章机器学习算法复习手册——决策树在复习完基本概念之后,我给自己挖了一个坑:用python写一个决策树出来(注意,不是sklearn调包)。虽然说这个东西...

8340
来自专栏AI研习社

调试机器学习模型的六种方法

在机器学习模型中,开发人员有时会遇到错误,但经常会在没有明确原因的情况下导致程序崩溃。虽然这些问题可以手动调试,但机器学习模型通常由于输出预测不佳而失败。更糟糕...

7020
来自专栏AI科技评论

观点 | 预见未来:NLP将迎来黄金十年

AI 科技评论按,本文转载自公众号“微软研究院 AI 头条”,雷锋网 AI 科技评论已获授权。

10220
来自专栏AI科技评论

2018 年最棒的三篇 GAN 论文

今年我很荣幸能参与到一个研究项目中,它要求我熟悉大量计算机视觉深度学习相关论文,让我深入到这个领域中学习,在此过程中,对于该领域在近两三年时间里所取得进步,我深...

10420
来自专栏AI科技评论

多图详解 DeepMind 的超人类水准星际争霸 AI 「AlphaStar」

参加直播的 DeepMind 研究人员是 DeepMind 团队联合研发负责人 Oriol Vinyals 和 David Silver,后者也是 AlphaG...

15140
来自专栏AI科技评论

业界 | 谷歌开源大规模神经网络模型高效训练库 GPipe

AI 科技评论按:谷歌昨日在博客中宣布开源大规模神经网络模型高效训练库 GPipe,这是一款分布式机器学习库,可以让研究员在不调整超参数的情况下,部署更多的加速...

7130

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励