Python贝叶斯文本分类模型从原理到实现.docxVIP

Python贝叶斯文本分类模型从原理到实现.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Python贝叶斯文本分类模型从原理到实现

Python贝叶斯文本分类模型从原理到实现朴素贝叶斯分类器是一种有监督学习,常见有两种模型,多项式模型(multinomial model)即为词频型和伯努利模型(Bernoulli model)即文档型。二者的计算粒度不一样,多项式模型以单词为粒度,伯努利模型以文件为粒度,因此二者的先验概率和类条件概率的计算方法都不同。计算后验概率时,对于一个文档d,多项式模型中,只有在d中出现过的单词,才会参与后验概率计算,伯努利模型中,没有在d中出现,但是在全局单词表中出现的单词,也会参与计算,不过是作为“反方”参与的(避免消除测试文档时类条件概率中有为0现象而做的取对数等问题)。一、数据集数据集是有8个分类的文本数据集,使用了结巴分词对每个文本分词,每个单词当作特征,再利用二元词串构造更多特征,然后去掉停用词,去掉出现次数太多和太少的特征,得到了19630个特征。取1998个样本用于训练,509个用于测试。基于词袋模型的思路将每个文本转换为向量,训练集和测试集分别转换为矩阵,并用python numpy模块将其保存为npy格式。数据集共使用了19630个单词作为特征,特征值是词在文本中出现的次数。8个分类,分别是1、2、...、8。训练集共1998个样本,测试集共509个样本。二、朴素贝叶斯分类器划分邮件算法朴素贝叶斯分类器,基于贝叶斯定理,是一个表现良好的分类方法。1、公式原理推导主要根据事件间的相互影响进行公式推断。1.1、条件概率:P(A|B) = P(A,B)/P(B)A和B是随机事件,P(A|B)也就是在事件B发生的前提下事件A发生的概率。P(A,B)表示A、B都发生的概率。这样一来,我们可以通过统计结果计算条件概率。例如假设有1000封邮件,垃圾邮件有300封,出现单词购买的邮件为50封,而即是垃圾邮件又同时出现了购买这个单词的邮件共有20封。如果把垃圾邮件看成事件A,邮件里出现单词购买看成事件B,那么P(A)是指垃圾邮件出现的概率,因为没考虑其他的因素对A的影响,也可以将P(A)看做A的先验概率,这里:P(A) = 300/1000 = 0.3同理,P(B) = 50/1000 = 0.05P(A,B)是指A和B同时发生的概率,P(A,B) = 20/1000 = 0.02根据条件概率的公式,能够得到P(A|B) = 0.02 / 0.05 = 0.4因为有B的影响,P(A|B)也叫做A的后验概率。1.2、相互独立事件如果事件A和B是相互独立的,代表着A发生的可能性对B发生的可能性没有影响,B也对A没有影响,在这种情况下:P(A,B) = P(A)*P(B)。既然A和B之间没有相互影响,那么:P(A|B) = P(A,B)/P(B) = P(A)P(B|A) = P(A,B)/P(A) = P(B)1.3、贝叶斯定理由P(A|B) = P(A,B)/P(B)很容易推出:P(A|B) = P(B|A)*P(A)/P(B)这也就是贝叶斯公式了。1.4、朴素贝叶斯分类器(naive Bayes classifier)首先有以下定理:如果B、C相互独立,那么P(B|C,A) = P(B|A)。设有事件A、B1、B2,那么在B1、B2同时发生的前提下,A发生的概率是:P(A|B1,B2) = P(B1,B2|A)*P(A) / P(B1,B2)如果B1和B2相互独立,那么有P(B1,B2|A) = P(B1|B2,A)*P(B2|A)= P(B1|A)*P(B2|A)于是,P(A|B1,B2) = P(B1,B2|A)*P(A) / P(B1,B2)= P(B1|A)*P(B2|A)*P(A) / P(B1,B2)根据实际需求,假设某个体有n项特征(可以看着邮件中出现的词语),分别为F1、F2、…、Fn。现有m个类别(可以看着邮件的分类),分别为C1、C2、…、Cm。贝叶斯分类器就是计算出概率最大的那个分类,也就是求下面这个算式的最大值(即算出每个分类的概率,以最大概率为最终分类):P(C|F1,F2,...,Fn)= P(F1,F2,...,Fn|C)*P(C) / P(F1,F2,...,Fn)由于 P(F1,F2,...,Fn)对于所有的类别都是相同的,可以省略,问题就变成了求P(F1,F2,...,Fn|C)*P(C)的最大值。朴素贝叶斯分类器则是更进一步,假设所有特征都彼此独立,因此P(F1,F2,...,Fn|C)*P(C)= P(F1|C)*P(F2|C)* ... *P(Fn|C)*P(C)朴素贝叶斯分类器假设所有特征都彼此独立存在一定的不合理性,不过该分类器一般能取得很好的分类效果。2、判断邮件是否为垃圾邮件假定我们现在有1000封被标识的邮件作为训练集,训练集一般是人工标识,分为“垃圾邮件”、“正常邮件”。注意

文档评论(0)

dashewan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档