第八章.贝叶斯分析—贝叶斯定理朴素贝叶斯

news2025/8/6 13:19:28

第八章.贝叶斯分析

8.1 贝叶斯定理&朴素贝叶斯

贝叶斯主要应用与新闻分类,文本分类,评论分析。

1.数理统计学处理的信息

1).贝叶斯方法

  • 关于统计推断的系统理论和方法,称为贝叶斯方法。

2).经典统计学

  • 总体信息:当前总体样本符合某种分布,比如0-1分布,二项分布,正态分布。

  • 样本信息:通过抽样得到的部分样本的某种分布

  • 抽样信息=总体信息+样本信息

  • 基于抽样信息进行统计推断的理论和方法称为经典统计学

3).贝叶斯统计学

  • 先验信息:抽样之前,有关推断问题中未知参数的一些信息,通常来自与经验或历史资料。

  • 基于总体信息+样本信息+先验信息进行统计推断的方法和理论,称为贝叶斯统计学。

2.贝叶斯定理

1).贝叶斯定理交换概率中的条件和结果的公式:

  • 如果已知P(X|H),求P(H|X):
    在这里插入图片描述

  • 参数解析:
    ①.P(H|X)给定观测数据样本X,假设H是成立的概率. [比如X是一份具有特定特征的邮件,H是垃圾邮件,它里面包含很多的单词(特征),然后我们判断这封邮件属于垃圾邮件的概率是多少]

    ②.P(H|X)是后验概率 [比如一份特定邮件中,是垃圾邮件的概率]

    ③.P(H)是H的先验概率 [比如总体邮件中垃圾邮件的概率]

    ④.P(X)是X的先验概率 [比如总体邮件中带有特定特征的邮件概率]

  • 大数定理:
    可以通过抽样来计算先验概率。抽样的数量越大,得到的结果越接近于真实的概率分布。

2).示例1:以邮件是否为垃圾邮件为例

在这里插入图片描述

  • 描述
    ①.P(H):垃圾邮件的先验概率

    ②.P(X):特定特征的先验概率

    ③.P(X|H):在垃圾邮件中,包含特定特征(比如“办证”)邮件的概率

    ④.P(H|X):包含特定特征(比如“办证”)的邮件属于垃圾邮件的概率

  • 有一个特定特征的情况:
    ①.邮件:总体100,正常70,垃圾30,“办证”’在正常邮件中出现10次,在垃圾邮件中出现25次。

    ②.假设X为“办证”,H为垃圾邮件。
    · P(X|H)=25/30=5/6
    · P(H)=30/100=3/10
    · P(X)=35/100=7/20
    · P(H|X)=5/7

    ③.包含“办证”这个词的邮件属于垃圾邮件的概率为5/7。

  • 有多个特定特征的情况:
    在这里插入图片描述
    ①.在有多个特征的情况下会使得统计量巨大。

    ②.比如需要计算办证对于垃圾邮件的影响

    ③.计算办证+理财对于垃圾邮件的影响 计算办证+理财+投资对于垃圾邮件的影响

    ④.计算办证+理财+投资+资讯对于垃圾邮件的影响

    ⑤.……

    ⑥.所有特征需要计算2n-1次,n是特征数

3.朴素贝叶斯 (Naive Bayes)

有多个特定特征的情况下,若继续使用上述公式,计算将会变得很复杂,故可以使用朴素贝叶斯。

1).公式

  • 假设:特征X1,X2,X3……之间都是相互独立的
    在这里插入图片描述

2).常见的朴素贝叶斯模型

①.多项式模型(MultinomialNB)

  • 以垃圾邮件分类为例:

    1).特定特征:“代开发票”,“增值税发票”,“正规发票”

    2).分词后为向量:(“代开”,“发票”,“增值税”,“发票”,“正规”,“发票”)

    3).重复的词语我们视为其多次出现:

    4).计算:
    在这里插入图片描述

②.伯努利模型(BernoulliNB)

  • 以垃圾邮件分类为例

    1).特定特征:“代开发票”,“增值税发票”,“正规发票”

    2).分词后为向量:(“代开”,“发票”,“增值税”,“发票”,“正规”,“发票”)

    3).重复的词语我们视为其出现一次:

    4).计算:
    在这里插入图片描述

③.混合模型

  • 在计算句子概率时,不考虑重复词语出现的次数,但是在统计计算词语的概率P(“词语”|S)时,却考虑重复词语的出现次数,这种模型叫做混合模型。
    在这里插入图片描述

④.高斯模型 (GaussianNB)

  • 有些特征可能是连续型变量,比如说人的身高,物体的长度,这些特征可以转换成离散型的值.
  • 比如身高在160cm以下,特征值为1;在160cm和170cm之间,特征 值为2;在170cm之上,特征值为3。
  • 也可以这样转换, 将身高转换为3个特征,分别是f1、f2、f3,如果身高是 160cm以下,这三个特征的值分别是1、0、0,若身高在 170cm之上,这三个特征的值分别是0、0、1。不过这些 方式都不够细腻,高斯模型可以解决这个问题。

⑤.词袋模型 (Bag of Words)

1).概念:

Bag-of-words model (BoW model)最早出现在自然语言处理(Natural Language Processing)和信息检索 (Information Retrieval)领域。该模型忽略掉文本的语 法和语序等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的。BoW使用一组无序的 单词(words)来表达一段文字或一个文档。
在这里插入图片描述

2).示例:

①.首先给出两个简单的文本文档.
在这里插入图片描述
②.基于上述两个文档中出现的单词,构建一个词典:
在这里插入图片描述
③.上面的词典中包含10个单词, 每个单词有唯一的索引,那么每个文本我们可以使用一个10维的向量来表示。如下:
·[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
·[1, 1,1, 1, 0, 1, 1, 1, 0, 0 ]

④.注意:该向量与原来文本中单词出现的顺序没有关系,而是词典中每个单词在 文本中出现的频率。

4.示例1—贝叶斯(iris)

1).代码实现

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.naive_bayes import MultinomialNB, BernoulliNB, GaussianNB

# 加载数据
iris = load_iris()
x_data = iris.data
y_data = iris.target

# 数据切分
x_train, x_test, y_train, y_test = train_test_split(x_data, y_data)

# 创建模型
mul_nb = GaussianNB()  # 高斯模型
mul_nb.fit(x_train, y_train)

# 预测函数
prediction = mul_nb.predict(x_test)

print(classification_report(y_test, prediction))
print(confusion_matrix(y_test, prediction))

2).结果展示

在这里插入图片描述

5.示例2—词袋模型构建单词的字典

1).代码实现

from sklearn.feature_extraction.text import CountVectorizer

texts = ['dog cat fish', 'dog cat cat', 'fish bird', 'bird']
cv = CountVectorizer()
cv_fit = cv.fit_transform(texts)

print(cv.get_feature_names_out())
print(cv_fit.toarray())
print(cv_fit.toarray().sum(axis=0))

2).结果展示

在这里插入图片描述

6.TF_IDF算法 —自然语言处理中比较重要的算法

提取词频(Term Frequency,缩写TF),

1).TF_IDF算法的思想:

  • 假设我们把停用词都过滤掉了,只考虑有意义的词。可能会遇到 这样一个问题,“中国”,“蜜蜂”,“养殖”这三个词的TF一样。 作为关键词,它们的重要性是一样的吗?

  • 用统计学语言表达,就是在词频的基础上,要对每个词分配 一个"重要性"权重。最常见的词(“的”、“是”、“在”)给予 最小的权重,较常见的词(“中国”)给予较小的权重,较少 见的词(“蜜蜂”、“养殖”)给予较大的权重。这个权重叫做 “逆文档频率”(Inverse Document Frequency,缩写为 IDF),它的大小与一个词的常见程度成反比。

2).常见计算词频(TF)的方法:

在这里插入图片描述

3).计算逆文档(IDF)频率的方法:

在这里插入图片描述

4).TF_IDF的计算公式:

在这里插入图片描述

5).公式示例分析

· 题干:
以《中国的蜜蜂养殖》为例,假定该文长度为1000个词, “中国”、“蜜蜂”、“养殖"各出现20次,则这三个词的"词频” (TF)都为0.02。然后,搜索Google发现,包含"的"字的网页 共有250亿张,假定这就是中文网页总数。包含"中国"的网页共 有62.3亿张,包含"蜜蜂"的网页为0.484亿张,包含"养殖"的网 页为0.973亿张。则它们的逆文档频率(IDF)和TF-IDF如下:

· 结果:

关键词包含该次的文档数(亿)TFIDFTF_IDF
中国62.30.020.6030.0121
蜜蜂0.4840.022.7130.0543
养殖0.9730.022.4100.0482

6).示例

· 代码实现:

from sklearn.feature_extraction.text import TfidfVectorizer

text = ['The quick brown fox jumped over the lazy dog.', 'The dog.', 'The fox']

# 创建变换函数
Tfdif = TfidfVectorizer()
# 词条化以及创建词汇表
Tfdif.fit(text)

# 总结
print(Tfdif.vocabulary_)#词的字典
print(Tfdif.idf_)

# 编码文档
vector = Tfdif.transform([text[0]])
# 总结编码文档
print(vector.toarray())

· 结果展示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/394155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2223sW2】LOG2

写在前面 好好学习,走出宿舍,走向毕设! 一些心路历程记录,很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧,还是不要给自己的查重挖坑罢了 23.3.2 检验FFT 早上师兄帮忙看了一眼我画的丑图&#xff…

什么是模块,Python模块化编程(入门必读)

Python 提供了强大的模块支持,主要体现在,不仅 Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块。通过这些强大的模块可以极大地提高开发者的开发效率…

深入理解Mysql索引底层数据结构与算法

索引是帮助MySQL高效获取数据的排好序的数据结构 深入理解Mysql索引底层数据结构与算法1.常见的数据结构讲解1.1 二叉树1.1.1 二叉树的定义1.1.2 二叉树示例1.1.3 Mysql为什么不使用二叉树进行数据存储1.2 红黑树1.2.1 红黑树的定义1.2.2 红黑树示例1.2.3 Mysql 为什么不适用红…

k8s学习之路 | k8s 工作负载 ReplicaSet

文章目录1. ReplicaSet 基础概念1.1 RS 是什么?1.2 RS 工作原理1.3 什么时候使用 RS1.4 RS 示例1.5 非模板 Pod 的获得1.6 编写 RS1.7 使用 RS1.8 RS 替代方案2. ReplicaSet 与 ReplicationController2.1 关于 RS、RC2.2 两者的选择器区别2.3 总结1. ReplicaSet 基础…

【三维几何学习】使用VTK对网格输入特征进行可视化

使用VTK对网格输入特征进行可视化引言一、全部代码二、可视化引言 使用python调用VTK库对网格的输入特征进行可视化,方便后续实验与分析 上图可视化的输入特征是热核特征HKS的第一个通道,也可对其他输入进行可视化数据集可参考1:三角网格(Triangular Me…

网上鲜花交易平台,可运行

文章目录项目介绍一、项目功能介绍1、用户模块主要功能包括:2、商家模块主要功能包括:3、管理员模块主要功能包括:二、部分页面展示1、用户模块部分功能页面展示2、商家模块部分功能页面展示3、管理员模块部分功能页面展示三、部分源码四、底…

LCMXO3L-640E-5MG121I【FPGA】LCMXO3L-640E-6MG121I采用65nm非易失性低功耗工艺设计

LCMXO3L-640E-5MG121I【FPGA】LCMXO3L-640E-6MG121I采用65nm非易失性低功耗工艺设计MachXO3设备系列是一个超低密度系列,支持最先进的可编程桥接和IO扩展。它具有突破性的IO密度和最低的每IO成本。设备IO功能集成了对最新行业标准IO的支持。121CSFBGA(明…

plg(Loki+Promtail+Grafana)监控nginx日志、messages日志监控平台

登录官网:loki官网Like Prometheus, but for logs. Contribute to grafana/loki development by creating an account on GitHub.https://github.com/grafana/loki/releases/ loki安装 ----root用户操作 ###创建用户 useradd loki passwd loki###创建安装目录 mkd…

蒙牛联合泛微采知连,实现研发知识管理数智化

蒙牛1999年成立于内蒙古自治区,总部位于呼和浩特,是全球乳业七强。蒙牛常温事业部坚持产品的创新研发和数智化转型,每年持续、稳定的新品推出,让业务快速增长、规模持续扩大。 (图片素材来自蒙牛官网) 构建…

基于单片机的波形发生器设计

单片机可以用来设计各种类型的波形发生器,下面是一种基于单片机的波形发生器设计方案。所需材料:单片机:可以选择常见的Atmel AVR单片机,如ATmega328P等。调制器:可以使用AD9833或AD9851等常用的调制器。时钟&#xff…

部署安装Nginx服务实例

其他服务: 搭建zabbix4.0监控服务实例 普罗米修斯监控mysql数据库实战 Linux安装MySQL数据库步骤 一. Nginx概念介绍 1.介绍Nginx程序 Nginx (engine x) 是一款开源且高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。主要特点是占用…

ElasticSearch - 分布式文档索引、搜索、更新和删除文档的过程

文章目录1. 分布式文档存储1. 路由一个文档到一个分片中2. 主分片和副本分片如何交互3. 新建、索引和删除文档4. 取回一个文档5. 局部更新文档2. ElasticSearch相关问题1. 路由计算方式?2. 分片控制3. 分布式文档写入(索引)的过程?4. 分布式文档搜索的过…

自动化实战以及自动化性能测试

web自动化测试实战编写web自动化测试用例;创建自动化项目,根据用例来实现脚本无头模式使用selenium4自动化测试工具和junit5单元测试框架结合,如何实现的,以及有什么两点使用了junit5中提供的注解;避免生成过多的对象&…

轻量简单的团队协作工具有哪些?远程办公必备软件排行榜

前段时间的疫情不断反复,让不少企业和团队都开启了居家办公,无论是线上协作还是团队会议,都要使用大量的办公远程软件,因为突如其来的场景大转变,所以无形中也给大家增加了不少烦恼。 经历过了就有经验了,…

Docker安装Jenkins练习纪录一

Docker安装Jenkins练习记录参考博客准备资源centos7下载vmware下载jdk8下载Maven 下载FinalShell下载开始练习一些小问题参考博客 https://blog.csdn.net/lzc2644481789/article/details/124888223 https://blog.csdn.net/qq_52423918/article/details/125169577 准备资源 cen…

2023年天津体育学院专升本专业课考试考生考前防疫及入场须知

天津体育学院2023年高职升本科专业考试考生考前须知 一、防疫要求 1.考生要强化自我健康“第一责任人”的意识和责任,自觉履行考前每日健康监测义务。须于考前7天(3月8日前)下载《天津体育学院2023年高职升本科专业考试考生健康安全承诺书》&…

【微信小程序开发全流程】篇章0:基于JavaScript开发的校园综合类微信小程序的概览

基于JavaScript开发的校园综合类微信小程序的概览 本文仅供学习,未经同意请勿转载 一些说明:上述项目来源于笔者我本科大三阶段2019年电子设计课程项目,在这个项目中,我主要是负责的部分有前端,前后端的对接&#xf…

深入理解机器学习——偏差(Bias)与方差(Variance)

分类目录:《深入理解机器学习》总目录 偏差(Bias)与方差(Variance)是解释学习算法泛化性能的一种重要工具。偏差方差分解试图对学习算法的期望泛化错误率进行拆解,我们知道,算法在不同训练集上学…

兴达易控Modbus转Profinet网关连接1200Profinet转modbus接三菱A800变频器案例

下面介绍A800 变频器通过兴达易控modbus转profinet网关,使1200plc无需编程实现Profinet转modbus协议转换,把modbus变频器轻松组网 网络拓扑如下图 打开博图组态加载GSD文件,modbus转profinet网关从站接口接入到1200PLC上 配置modbus转profine…

【MyBatis】篇二.MyBatis查询与特殊SQL

文章目录1、MyBatis获取参数值case1-单个字面量类型的参数case2-多个字面量类型的参数case3-map集合类型的参数case4-实体类类型的参数case5-使用Param注解命名参数总结2、MyBatis的各种查询功能case1-查询结果是一个实体类对象case2-查询结果是一个List集合case3-查询单个数据…