一、概念
1.1贝叶斯定理(Bayes Theorem)

eg.判断一个人品质的好坏是根据一个人过往的行为进行判断的,但是对于陌生人一开始初始化为50%好人、50%坏人,如果之后他做了一件好事,这个事会增加我们判断他为好人的根据。如果发现他做了一件坏事,会增加他是坏人的概率。

1.2朴素贝叶斯分类(Naive Bayes Classifier)

贝叶斯分类算法,是统计学的一种分类方法,它是利用贝叶斯定理的概率统计知识,对离散型数据进行分类的算法。

案例:

问题:现在来了第七个病人,是一个打喷嚏的建筑工人,他患上哪种疾病的概率最大?

解答:

从上表中可以看出,
感冒有3例,其中打喷嚏为两例,所以打喷嚏的概率为2/3 = 0.66;
感冒有3例,建筑工人感冒为1例,所以建筑工人感冒的概率为:1/3 = 0.33
疾病一共6例,感冒有3例,所以得感冒的概率为:1/2 = 0.5 ,同理打喷嚏的概率也为:1/2 = 0.5

一共6个职业,建筑工人为2人,所以建筑工人的概率为:2/6 = 0.33

P(感冒|打喷嚏 × 建筑工人)

=P(打喷嚏|感冒) × P(建筑工人|感冒) × P(感冒) / P(打喷嚏) × P(建筑工人)
=0.66 × 0.33 × 0.5 / 0.5 × 0.33

0.66

同理:
P(过敏|打喷嚏 × 建筑工人)

=P(打喷嚏|过敏) × P(建筑工人|过敏) × P(过敏) / P(打喷嚏) × P(建筑工人)
=1 × 0 × 0.17 / 0.5 × 0.33

= 0

P(脑震荡|打喷嚏 × 建筑工人)

=P(打喷嚏|脑震荡) × P(建筑工人|脑震荡) × P(脑震荡) / P(打喷嚏) × P(建筑工人)
=0 × 0.5 × 0.5 / 0.5 × 0.33

= 0

综上所述:

这个病人最有可能患病的是感冒了。

二、贝叶斯分类算法的类型
2.1sklearn包naive_bayes模块

1)GaussianNB    高斯贝叶斯算法
适用于数据正太分部,具体求解释可以不用知道每个样本的数值,只需要知道均值和方差,就可以计算。

2)BernoulliNB    伯努利贝叶斯算法

适用于特征值伯努利分部的数据。0和1,是和否这样的数据。

3)MultinomiaLNB    多项式贝叶斯算法(用的最多,文本分类场景)

特征值不知道属于哪种分部,统计每个特征的分部。需要知道每个特征值的数值大小。

三、多项式贝叶斯算法进行文本分类

# -*- coding: utf-8 -*-import os
import codecs
import os.path#1.先给每个类别标注一个名称,不能简单用文本名了。
classDict = {'C000007': '汽车','C000008': '财经','C000010': 'IT','C000013': '健康','C000014': '体育','C000016': '旅游','C000020': '教育','C000022': '招聘','C000023': '文化','C000024': '军事'
}#2.搭建语料库
rootDir = "C:\\Python_DM\\5.2\\SogouC.mini\\Sample"classes = [];
filePaths = [];
fileContents = [];
for c in classDict.keys():fileDir = os.path.join(rootDir, c)for root, dirs, files in os.walk(fileDir):for name in files:filePath = os.path.join(fileDir, name);classes.append(classDict[c]);filePaths.append(filePath);f = codecs.open(filePath, 'r', 'utf-8')fileContent = f.read()f.close()fileContents.append(fileContent)import pandas;
corpos = pandas.DataFrame({'class': classes,'filePath': filePaths, 'fileContent': fileContents
});#3.分词建立文本向量,有了文本向量就有了分类的特征值了。#文本向量=文本的特征值#不同的文章,每个词出现的频率都是不一样的。
import re
#匹配中文的分词
zhPattern = re.compile(u'[\u4e00-\u9fa5]+')import jiebasegments = []
filePaths = []
for index, row in corpos.iterrows():segments = []filePath = row['filePath']fileContent = row['fileContent']segs = jieba.cut(fileContent)    for seg in segs:if zhPattern.search(seg):segments.append(seg)filePaths.append(filePath)row['fileContent'] = " ".join(segments);from sklearn.feature_extraction.text import CountVectorizerstopwords = pandas.read_csv("C:\\Python_DM\\5.2\\StopwordsCN.txt", encoding='utf8', index_col=False,quoting=3,sep="\t"
)countVectorizer = CountVectorizer(stop_words=list(stopwords['stopword'].values),min_df=0, token_pattern=r"\b\w+\b"
)
textVector = countVectorizer.fit_transform(corpos['fileContent'])#多项式贝叶斯算法
from sklearn.naive_bayes import MultinomialNB
MNBModel = MultinomialNB()#fit方法进行模型训练。
#把文本向量作为特征值传入,
#把文本对应的序列作为目标序列传入。
MNBModel.fit(textVector, corpos['class'])#不进行交叉验证
#调用score进行评分
MNBModel.score(textVector, corpos['class'])#网上找一篇文章,赋值给新的文本变量。
#对这篇文章的所属分类进行预测
newTexts = ["""
据介绍,EliteBook 840 G4是一款采用14英寸1080p屏幕的商务笔记本,硬件配置方面,入门级的EliteBook 840 G4搭载Intel Core i3-7100处理器,
配备4GB内存和500GB机械硬盘,预装Windows 10操作系统。
高端机型可选择更大容量的内存和SSD固态硬盘。
机身四周提供了USB 3.0、USB-C、DisplayPort、15针迷你D-Sub,
支持蓝牙4.2和802.11ac Wi-Fi。
整机重1.48千克。
"""]for i in range(len(newTexts)):newTexts[i] = " ".join(jieba.cut(newTexts[i]));#countVectorizer生成这篇文章的文本向量
newTextVector = countVectorizer.transform(newTexts)#调用贝叶斯模型的predict进行预测
MNBModel.predict(newTextVector)
"""
Out[16]:
array(['IT'],dtype='<U2')
"""

Python数据挖掘实战——贝叶斯分类算法相关推荐

  1. 【Python数据挖掘实战案例】K-Means广告效果聚类分析

    作者:杨啊小强 来源:Python数据科学修炼之路 本案例的业务场景: 假如你们公司投放广告的渠道很多,每个渠道的客户性质也可能不同,比如在优酷视频投广告和今日头条投放广告,效果可能会有差异.现在需要 ...

  2. python数据挖掘实战笔记——文本挖掘(8):用sklearn包进行关键字提取

    概念: sklearn: 全名Scikit-Learn,是基于python的机器学习模块,网址:http://scikit-learn.org/stable/index.html ,里面对一些常用的机 ...

  3. python数据挖掘实战项目开源git_强烈推荐:8个顶级git/github项目数据分析工具

    任何重要的决定都应基于数据,对于信息项目和软件开发亦是如此.如果你不仔细查看描述项目演进的数据就无法了解项目的健康状况,并给出合理的改进措施.为了分析和挖掘这些信息,我们可以从Git存储库和项目所在的 ...

  4. Python数据挖掘实战——相关分析

    继续补以前拉下的债~~~ 一.相关性指标的研究意义 1.1相关系数(Correlation coefficient):     相关系数是变量间关联程度的最基本测度之一 1.2相关分析(Correla ...

  5. 数据挖掘—朴素贝叶斯分类算法(Java实现)

    算法描述 (1)扫描训练样本数据集,分别统计训练集中类别 Ci 的个数 Di 和属于类别Ci 的样本中属性Ak取值Xk为 Dik 的实例样本个数,构成统计表: (2)计算先验概率和条件概率,构成概率表 ...

  6. python数据挖掘实战笔记——文本挖掘(9):相似文章推荐

    概念: 相似文本推荐:在用户阅读某篇文章的时候,为用户推荐更多与在读文章内容类似的文章. **推荐:**指介绍好的人或事物,希望被任用或接受.数据挖掘领域,推荐包括相似推荐及协同过滤推荐. **相似推 ...

  7. Python数据挖掘实战篇:利用KNN进行电影分类

    题目 下面数据集中序号1-12为已知的电影分类,分为喜剧片.动作片.爱情片三个种类,使用的特征值分别为搞笑镜头.打斗镜头.拥抱镜头的数量.那么来了一部新电影<万里归途>,它属于上述3个电影 ...

  8. python数据分类方法_Python数据挖掘—分类—贝叶斯分类

    pandas之get_dummies 方法:pandas.get_dummies(data,prefix=None,prefix_sep="_",dummy_na=False,co ...

  9. Python数据挖掘-词频统计-实现

    词频:某个词在该文档中出现的内容 1.语料库搭建 import jieba jieba.load_userdict("D:\\Python\\Python数据挖掘\\Python数据挖掘实战 ...

  10. 数据挖掘学习——朴素贝叶斯分类算法beast cancer实战

    目录 1.朴素贝叶斯分类算法相关的统计学知识 2.朴素贝叶斯分类器 3.朴素贝叶斯分类器python实现 (1)调用sklearn库,需要安装 (2)实例1(查看数据的分布情况和数据格式) (3)实例 ...

最新文章

  1. 单镜头视觉系统检测车辆的测距方法
  2. intellij_使用IntelliJ ..已经2周了,到目前为止还算不错
  3. python进阶:switch语句、推导式与None类型
  4. shell实例第17讲:连续输入4个100以内的数字,统计和、乘、平均、最小和最大
  5. [Win] 利用Memory DC抽取EXE的图标并保存为BMP文件
  6. css实验内容,12个令人惊叹的CSS实验项目
  7. CentOS常用指令
  8. linux网络编程-----几种服务器模型及io多路复用函数
  9. mysql8允许外网访问(转载+整理)
  10. 3行!仅3行代码就能抓取B站数据
  11. golang:正则表达式匹配网页url_网络爬虫:3种网页抓取方法
  12. linux中$@,$*,$0,$$,$?参数的含义
  13. hihoCoder#1743:K-偏差排列(矩阵快速幂+状压dp)
  14. linux远程升级运行程序,在LINUX上对DSP程序远程升级的实现想法
  15. 每日一句20191104
  16. ppp协议 服务器,PPP上的认证协议
  17. Redis命令之scan、sscan、hscan、zcan
  18. 万人拆盲盒,比特小鹿“2周年庆”云托管新团掀高潮
  19. 使用PS制作背景透明的png图片
  20. sox处理mp3_sox的常用方法

热门文章

  1. 【Android】ListView刷新、加载
  2. 码农小汪之理解Java注解。
  3. 全国2013年最新电子地图矢量数据超图格SGD MAPINFO GST SMW SHP格式等
  4. McAfee:僵尸网新威胁远甚Conficker
  5. Java小开发(车辆信息管理系统)
  6. FFmpeg的一些结构与函数
  7. 熟练计算机数字键盘,电脑键盘盲打及快速输入技巧【一】
  8. c++ 在内存中加载 exe/dll (不使用CreateProcess、LoadLibrary 等 API)
  9. html5 progressbar,jQuery进度条插件NUMBERPROGRESSBAR
  10. this.FileUpload1.PostedFile.File…