决策树、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、使用算法:构建一个完整的程序对一组文档进行分类,将错分的文档输入到屏幕上