码迷,mamicode.com
首页 > 其他好文 > 详细

朴素贝叶斯-基于概率的分类方法

时间:2015-03-19 06:12:50      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

决策树、knn算法都是结果确定的分类算法,数据示实例最终被明确的划分到某个分类中

贝叶斯:不能完全确定数据实例应该划分到某个类,湖综合只能给出数据实例属于给定分类的概率

  *引入先验概率与逻辑推理来处理不确定命题

  *(扩展命题),另一种叫频数概率,从数据本身出发得到结论,不考了逻辑推理及先验知识。

朴素贝叶斯:整个形式化过程中制作最原始,最简单的假设

python文本能力:将文本划分为词向量,利用词向量对文本分类

 

朴素贝叶斯:选择高概率对应的类别

  优点:在数据较少的情况下仍然有效,可以处理多类别问题

  缺点:对于输入数据的准备方式较为敏感

  使用数据类型:标称型数据

贝叶斯,knn,决策树方法针对一个数据集有两类数据的状况

  knn:计算量大

  决策树:分别沿x,y轴进行,但成功率不高

  贝叶斯:应用概率比较,即选择最高概率

 

条件概率:

样本值:假定1个特征值,n个样本,那么10个特征值,n**10个样本,如果样本间完全独立(统计学上,一个特征出现的可能性与它和其他单词相邻没有关系),那么样本数可以是n*10

朴素贝叶斯:

  假设一:这里就是指样本间相互无统计学上的关系,那么10个特征值,样本量就采用*10的方式

  假设二、每个特征值都同等重要,此时10个特征值,甚至不需要不需要n*10个特征值就可以计算

朴素贝叶斯分类器分为两种

  贝努利模型:实现过程中不考了文档中出现的次数,只考虑是否出现,相当于假设词是等权重的

  多项式模型:考虑词在文本中出现的次数

 

示例:python用于文本分类:

  注释:每个文本片段表示一个词条向量,其中值为1表示词条出现在文档中,0表示未出现

 

贝叶斯实现过程:

1、收集数据:可以使用任何方法,如rss源

2、准备数据:需要数值型或布尔型数据

   *每个词的出现与否--词集模型

  *每个词可以出现多次--词袋模型,词袋模型当发现同一值出现多次时就往之前的值加1

3、分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好

  将文本看成单词向量或词条向量,将句子转化为向量

  *创建一个空集,将每篇文档返回的新词集合添加到该集合中

  *创建两个集合的并集,位操作符处理

  *创建一个其中所有元素为0的向量,遍历文档中所有词,如果出现了在词汇表中的词,将输出的文档向量对应值设为1

  *返回一个矩阵文件

4、训练算法:计算不同独立特征的条件概率

  *从词向量计算概率-伪代码

  计算每个分类中的文档数

  对每篇训练文档:

    对每个类别:

      如果词条出现在文档中->增加该词条的计算值

      增加所有词条的计算值

    对每个类别

      对每个词条:

        将该词条的数目初一综述条目得到条件概率

    返回每个类别的条件概率

  具体步骤:

  *初始化概率

  *向量相加

  *对每个元素做出发

5、测试算法:计算错误率

  根据现实情况修改分类器

  *要计算多个概率的成绩以获得文档数于某个类别的概率,但如果其中一个为0,乘积就是0,为降低影响,我们将所有词初始化为1,分母初始化为2

  *下溢或者得不到正确的答案:由于太多很小的乘积造成(太小的数四射五入为0) 解决法:对乘积取自然对数; 

6、使用算法:一个常见的贝叶斯应于文本分类, 可以在任意的类场景中使用贝叶斯分类器,但不一定要是文本

 

示例:应用贝叶斯分类器来过滤垃圾邮件

  注:引入字符串列表,生成词向量

  伪代码:

  1、收集数据:提供文本文件

  2、准备数据:将文件拆分解析为词条向量

    *切分文本(邮件标题,URL)

  3、分析数据:检查词条确保解析的正确性

  4、训练算法:使用之前建立的trainnb0()函数

  5、测试算法:使用classfynb(),并构建一个新的测试函数来计算文档错误率

    *文件解析及完整的垃圾邮件测试函数

      *导入并解析文本文件

      *随机构建训练集

      *对测试集分类

 

示例:使用朴素贝叶斯分类器从个人广告中获取区域倾向

  示例:使用贝叶斯来发现地域相关的用词

  目标:目的不是分类器进行分类,而是通过观察单词和条件概率值来发现与特定城市相关的内容

  1、收集数据:从rss收集内容,这里需要对rss源构建一个借口

    *计算出现频率

    *每次访问一条rss源

    *去掉出现次数最高的那些词

  2、准备数据:姜文不能解析成词条向量

  3、分析数据:检查词条确保解析正确性

    *显示缔约先关用词

  4、训练算法:使用之前建立的trainnb0()函数

  5、测试算法:观察错误率,确保分类器可用,可以修改切分程序,降低错误率,提高分类结果

  6、使用算法:构建一个完整的程序,封装所有内容,给定两个rss源,该程序显示常用的公共词。

 

  6、使用算法:构建一个完整的程序对一组文档进行分类,将错分的文档输入到屏幕上

 

  

 

朴素贝叶斯-基于概率的分类方法

标签:

原文地址:http://www.cnblogs.com/ccbird/p/4349180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!