前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >朴素贝叶斯的基本算法和高斯混合朴素贝叶斯算法

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

作者头像
大数据技术与机器学习
发布2019-11-20 16:12:13
1.4K0
发布2019-11-20 16:12:13
举报
文章被收录于专栏:机器学习入门与实战

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习入门与实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. 朴素贝叶斯原理
    • 4.1 朴素贝叶斯的主要优点
      • 4.2 朴素贝叶斯的主要缺点
      • 实现朴素贝叶斯的基本算法和高斯混合朴素贝叶斯算法
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档