朴素贝叶斯算法_朴素贝叶斯算法介绍(补充)

2023-11-10

朴素贝叶斯是基于贝叶斯决策理论和特征属性独立假设的生成方法。朴素贝叶斯中的朴素是指特征条件独立假设,贝叶斯定理是用来描述两个条件概率之间的关系。上一篇有做一些介绍(朴素贝叶斯算法介绍),这次做一些补充。

1.贝叶斯原理

  • 先验概率:通过经验来判断事情发生的概率,如全概率公式,它往往作为"由因求果"问题中的"因"出现的概率,比如南方的梅雨季是 6-7 月,就是通过往年的气候总结出来的经验,这个时候下雨的概率就比其他时间高出很多。

  • 后验概率:后验概率就是发生结果之后,推测原因的概率,是“执果寻因”问题中的"果"。先验概率与后验概率有不可分割的联系,后验概率的计算要以先验概率为基础,比如一本书现在已经被别人借走了(事件已经发生),已知只有可能是张三,李四,王五这3个人借走(事件发生的所有原因)。那么这本书被张三借走的概率会是多大呢?

  • 条件概率:事件 A 在另外一个事件 B 已经发生条件下的发生概率,表示为 P(A|B),读作“在 B 发生的条件下 A 发生的概率”。比如原因 A 的条件下,发生B的概率,就是条件概率。

da995beeb44d4ac75d86c66ae85971ba.png
image.png

其中P(A)叫做先验概率,P(B|A)叫做条件概率,而我们所求的P(A|B)就叫做后验概率。

2.sklearn中的朴素贝叶斯

三种算法适合应用在不同的场景下,我们应该根据特征变量的不同选择不同的算法:

2.1 高斯朴素贝叶斯(naive_bayes.GaussianNB)

特征变量是连续变量,符合高斯分布,比如说人的身高,物体的长度。

 # 导入模块
from sklearn.naive_bayes import GaussianNB
# 实例化
gnb = GaussianNB()
# 训练模型
gnb = gnb.fit(Xtrain,Ytrain)
# 查看分数
acc_score = gnb.score(Xtest,Ytest) 
# 查看预测结果
Y_pred = gnb.predict(Xtest) 
# 查看预测的结果
prob = gnb.predict_proba(Xtest)

2.2 多项式朴素贝叶斯(naive_bayes.MultinomialNB)

特征变量是离散变量,符合多项分布,在文档分类中特征变量体现在一个单词出现的次数,或者是单词的 TF-IDF 值等。

# 导入模块
from sklearn.naive_bayes import MultinomialNB 
mnb = MultinomialNB().fit(Xtrain,Ytrain)
# 获取每个标签类的先验概率
mnb.class_log_prior_ 
# 返回一个固定类别标签下每个特征的对数概率
mnb.feature_log_prob_ 

2.3 伯努利朴素贝叶斯(naive_bayes.BernoulliNB)

特征变量是布尔变量,符合 0/1 分布,在文档分类中特征是单词是否出现。

from sklearn.naive_bayes import BernoulliNB
mms = MinMaxScaler().fit(Xtrain)
Xtrain_ = mms.transform(Xtrain)
Xtest_ = mms.transform(Xtest)
bnl_ = BernoulliNB().fit(Xtrain_, Ytrain)
bnl_.score(Xtest_,Ytest)
brier_score_loss(Ytest,bnl_.predict_proba(Xtest_)[:,1],pos_label=1) 
bnl = BernoulliNB(binarize=0.5).fit(Xtrain_, Ytrain)
bnl.score(Xtest_,Ytest)
brier_score_loss(Ytest,bnl.predict_proba(Xtest_)[:,1],pos_label=1)

3.TF-IDF

TF-IDF 是一个统计方法,用来评估某个词语对于一个文件集或文档库中的其中一份文件的重要程度。是由TF和IDF的乘积构成,分别代表了词频和逆向文档频率。这样我们倾向于找到 TF 和 IDF 取值都高的单词作为区分,即这个单词在一个文档中出现的次数多,同时又很少出现在其他文档中。这样的单词适合用于分类。

词频 TF:计算了一个单词在文档中出现的次数,它认为一个单词的重要性和它在文档中出现的次数呈正比。

逆向文档频率 IDF:是指一个单词在文档中的区分度。它认为一个单词出现在的文档数越少,就越能通过这个单词把该文档和其他文档区分开。IDF 越大就代表该单词的区分度越大。965d1e0595d11b7572f26f5c7ab96768.png

# 通过feature_extraction.text模块中的TfidfVectorizer类查看每个词的权重,将原本出现比较多的词的词压缩,来压缩该词的权重,将原本出现比较次数少的词的词进行拓展,增加我们的权重
sample = ["Machine learning is fascinating, it is wonderful"
          ,"Machine learning is a sensational techonology"
          ,"Elsa is a popular character"]
from sklearn.feature_extraction.text import TfidfVectorizer as TFIDF
vec = TFIDF()
X = vec.fit_transform(sample)

#每一个单词作为一个特征,每个单词在这个句子中所占的比列
#同样使用接口get_feature_names()调用每个列的名称
TFIDFresult = pd.DataFrame(X.toarray(),columns=vec.get_feature_names())
TFIDFresult.sum(axis=0) / TFIDFresult.sum(axis=0).sum()
807e0cd5fcad29130d408a0bd0b9041e.png

3103c3c3e37996ead42c9cfcdeeba1e0.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

朴素贝叶斯算法_朴素贝叶斯算法介绍(补充) 的相关文章

  • redis 十一. IO 多路复用

    目录 一 基础 select poll epoll 二 redis 与多路复用 一 基础 首先知道一下五种io模型有个概念 Blocking IO 阻塞IO NoneBlockin IO 非阻塞IO IO multiplexing redi
  • 深入详解ThreadLocal内存泄漏问题

    1 造成内存泄漏的原因 threadLocal是为了解决对象不能被多线程共享访问的问题 通过threadLocal set方法将对象实例保存在每个线程自己所拥有的threadLocalMap中 这样每个线程使用自己的对象实例 彼此不会影响达
  • 大学毕业后,我就去当了2个月外卖骑手,哭了一整晚

    先简单介绍一下自己 我来自长沙 大学学的的物流管理专业 现在就职于一家互联网公司 从事软件测试工作 我来自长沙县的一个偏远农村 家里兄弟姐妹多 父母无力负担我的学费 很多时候学费都是靠姐姐姐夫接济 我大学也做过很多兼职家教 所以可以支撑我到
  • LaTex中公式太长怎么办(公式跨栏显示)

    目录 问题 方案 1 缩小公式字体 2 公式内容换行 3 公式跨栏居中显示 这些方法我摸索了一个早上才找到的 如果对大家有帮助 请大家给我一键三连 非常感谢 问题 在双列栏中 有一道公式长度实在太长 左思右想 发现无非几种解决办法 方案 1
  • Linux 查看/关闭/禁止开机启动防火墙命令

    1 查看防火墙 firewall 的状态 firewall cmd state 或者 systemctl status firewalld 2 停止防火墙 firewall systemctl stop firewalld service
  • 转换wxDateTime为Python

    wxPython Converting wx DateTime to Python datetime The wxPython GUI toolkit includes its own date time capabilities Most
  • 网安基础知识—【IP地址】

    文章目录 一 什么是IP地址 二 IP地址的分类 三 子网掩码 一 什么是IP地址 IP地址就像我们需要打电话时的电话号码一样 它用来标识网络中的一台主机 每台主机至少有一个IP地址 而且这个IP地址是全网唯一的 IP地址由网路号和主机号两
  • 'Invalid parameter not satisfying: URLString'网络请求的时候get使用特殊字符和汉字崩溃的恶心bug解决方法...

    参数需要转一下的就ok value value stringByAddingPercentEscapesUsingEncoding NSUTF8StringEncoding 转载于 https www cnblogs com godlove

随机推荐

  • 易懂分布式

    转载自 https www jianshu com p f2c31e632f1d 近年来 区块链技术 部分人更愿意称之为分布式账本技术 的走红将分布式技术的概念带入大众的视野 区块链技术之所以备受追捧 一方面是其展现了一种在计算机的辅助下
  • 手机连云服务器传文件,手机云服务器传输文件

    手机云服务器传输文件 内容精选 换一换 本节操作介绍本地Linux操作系统主机通过SCP向Linux云服务器传输文件的操作步骤 登录管理控制台 在ECS列表页面记录待上传文件的云服务器的弹性公网IP 上传文件在本地Linux操作系统主机上执
  • java操作es集群模糊查询等

    首先引入依赖
  • Groovy简介和一点资源

    Groovy简介 简单地说 Groovy是一门基于JVM的动态语言 我们可以把它当成JVM上的Python语言来使用 而且Groovy的有些语法都和Python Ruby等脚本语言很相似 Groovy最后也会被编译为Java字节码 在JVM
  • 【java】之3种方式实现Object和Map之间的转换

    转载 java 之3种方式实现Object和Map之间的转换 古越剑箫 博客园
  • 我的postfix+postfixadmin邮件服务器架设过程

    Step1 安装apache mysql php 配置dns 如果mysql为自定义安装 请做以下操作 PATH PATH usr local mysql bin export PATH echo usr local mysql lib m
  • HTML5新控件 - url类型输入框(网址)

    如果需要一个用来填写url地址的输入框 可以使用url类型 这样浏览器可以帮我们验证格式是否正确 而不需要自己写验证规则 网址验证规则 首先要有一个URL前缀 http ftp 等 后面可以是空格和大多数特殊字符 冒号除外
  • Theano学习系列(3):符号变量的方法之creat new tensor

    Theano学习系列 3 符号变量的方法之Creat New Tensor 和前两节一样 本节重点讲述tensor方法中的creat new tensor这些知识 这一节共有11个函数需要我们去学习掌握 由于有的函数区别很小 这里只介绍一部
  • AD 画PCB布线时,走线网线高亮,其它不走线网络变黑的设置方法

    正常布线时显示效果 布线时所有PCB显示都正常 设置不走线网格变黑的方法 2 1 T P调出配置项 tools Preferences PCB Editor Display中Highlighting Options 然后勾选apply ma
  • 通过Pyecharts和Matplotlib对数据中的性别信息进行可视化

    前言 在进行描述性数据分析时会遇到需要进行分类统计的数据 例如性别 所在地区等等 本篇文章用数据中的性别信息为例并通过Pyecharts和Matplotlib对其进行可视化 1 导入数据 import pandas as pd import
  • 熵、联合熵、条件熵

    1 单变量的熵 离散型随机变量的熵 熵是一个随机变量不确定性的度量 一个随机变量的熵越大 意味着不确定性越大 换言之 该随机变量包含的信息量越大 必然事件是确定无疑的 并不含有不确定性 所以必然事件的熵应该是0 也就是说 必然事件不含有信息
  • MIPI(D-PHY)协议简介&测量方法&测试项简介

    作者 AirCity 2020 2 20 Aircity007 sina com 本文所有权归作者Aircity所有 1 MIPI Alliance 说起MIPI 就得说下这个MIPI Alliance 这个联盟聚集了很多知名IC大厂 手机
  • Kubernetes[k8s] 最新版1.27.3安装教程,使用containerd模式

    背景 公司使用的是交老的k8s版本 1 16 由于老版本的K8s对于现在很多新特性不支持 所以需要升级到新版本 目前2023年7月11日最新版本的k8s是v1 27 3 通过参考官方文档进行k8s部署工作 其中涉及到操作系统配置 防火墙配置
  • ES6 中的let、const与var的区别

    首先需要明确的是let const var都是用来定义变量的 在ES6之前 我们一般都用var来定义变量 例如 function test var i 1 console log i console log j var j 2 test c
  • xgboost的优势是什么,为什么能在人工智能竞赛中取得好成绩

    XGBoost eXtreme Gradient Boosting 是一种高效的集成学习算法 它是在基于决策树的梯度提升算法的基础上进行改进 它的优势在于 高效 XGBoost使用了并行化处理 能够快速训练大规模的数据集 稳定 XGBoos
  • vscode 无法连接远程服务器 .vscode-server Permission denied

    错误log 用 VScode直接连接服务器 遇到这个问题 我的终端ssh是可以直接登上服务器的 VScode不行 18 41 45 067 Server installation process already in progress wa
  • Python操作mongodb数据库详解

    数据库的分类 数据库可以简单的分为 MySQL 和 NOSQL 两类 这里的 NOSQL 不是 NO SQL 的意思 他的意思是 Not Only MySQL MySQL与NoSQL之间的区别 1 MySQL是一个基于表格设计的关系数据库
  • 线性代数学习笔记——第七十一讲——正交矩阵

    1 正交矩阵引例 2 正交矩阵的定义 3 正交矩阵的充要条件是其行 列 向量组都是规范正交向量组 4 正交矩阵判定示例 5 正交矩阵的应用示例1 6 正交矩阵的应用示例2
  • 【MacOS】SSH 设置别名+免密登录

    设置别名 首先 进入ssh的config文件 vim ssh config 按I写入 Host my name User zmq HostName 1xx xx xx xxx Port 22 输入 x保存退出 设置别名成功 可以直接 ssh
  • 朴素贝叶斯算法_朴素贝叶斯算法介绍(补充)

    朴素贝叶斯是基于贝叶斯决策理论和特征属性独立假设的生成方法 朴素贝叶斯中的朴素是指特征条件独立假设 贝叶斯定理是用来描述两个条件概率之间的关系 上一篇有做一些介绍 朴素贝叶斯算法介绍 这次做一些补充 1 贝叶斯原理 先验概率 通过经验来判断