【machine learning】朴素贝叶斯分类方法

一、概述

1.1 贝叶斯决策

本文主要讲述利用朴素贝叶斯进行分类的问题。朴素贝叶斯是贝叶斯决策理论的一部分,所以讲述朴素负叶斯之前有必要快速了解一下贝叶斯决策理论。
我们现在用p1(x,y)表示数据点(x,y)属于类别1,用p2(x,y)表示数据点(x,y)属于类别2 的概率,那么对于一个新数据点(x,y),可以用下面的规则来判断它的类别:

  • 如果p1(x,y) > p2(x,y),那么类别为1。
  • 如果p1(x,y) < p2(x,y),那么类别为2。

也就是说,我们会选择高概率对应的类别。这就是贝叶斯决策理论的核心思想,即选择具有最高概率的决策。

1.2 朴素贝叶斯

我们称之为“朴素”,是因为整个形式化过程只做最原始、最简单的假设。对于朴素贝叶斯与贝叶斯理论的不同,我们引入条件概率来分类。
需要计算和比较的是p(c1|x,y)和p(c2|x,y)。这些符号所代表的具体意义是:
给定某个由x,y表示的数据点,那么该数据点来自类别c1的概率是多少?数据点来自类别c2的概率又是多少?注意这些概率与p(x,y|c1)并不一样,不过可以使用贝叶斯准则来交换概率中条件与结果。具体地,应用贝叶斯准则得到:
这里写图片描述

  • 如果p1(c1 | x,y) > p2(c2 | x,y),那么类别为1。
  • 如果p1(c1 | x,y) < p2(c2 | x,y),那么类别为2。

在利用朴素贝叶斯进行文本分类时,(x,y)表示词数值向量,如[0,1,0,…,1],则贝叶斯准则转换为:
这里写图片描述
w表示一个词数值向量,即它由多个数值组成。在这个例子中,数值个数与词汇表(文档所有的词的列表)中的词个数相同。

优缺点:

  • 优点:在数据较少的情况下仍然有效,可以处理多类别问题。
  • 缺点:对于输入数据的准备方式较为敏感。
  • 适用数据类型:标称型数据

二、程序设计与算法简单应用

2.1 自定义测试数据

函数说明:

  • loadDataSet():加载训练样本数据
  • createVocabList():将所有文档的所有词统一到一个list中并返回,不重复
  • setOfWord2Vec():将词向量转换为词对应的数值向量
  • trainNB0():训练函数,返回三个参数
    # 类别0中词的条件概率向量
    # 类别1中词的条件概率向量
    # 0和1类别发生概率向量(二维)
  • classifyNB():贝叶斯准则的直接体现,返回输入文档词数值向量的类别值0或1

下面为loadDataSet()示例

# 加载训练样本数据
def loadDataSet():
    # 每一个列表为一个文档分词
    postingList=[['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],
                 ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],
                 ['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'],
                 ['stop', 'posting', 'stupid', 'worthless', 'garbage'],
                 ['mr', 'licks', 'ate', 'my', 'steak', 'how', 'to', 'stop', 'him'],
                 ['quit', 'buying', 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值