【机器学习】贝叶斯分类器

贝叶斯分类器是一种概率模型,利用贝叶斯公式来解决分类问题。假设样本的特征向量服从一定的概率分布,我们就可以计算出该特征向量属于各个类的条件概率。分类结果是条件概率最大的分类结果。如果假设特征向量的每个分量彼此独立,则它是朴素贝叶斯分类器。如果假设特征向量服从多维正态分布,则它是正态贝叶斯分类器。

一、原理:

贝叶斯公式(Bayes' theorem)

efbe022bcaf693c7f5e5eedd02240de2.png

24949e4000b767a9ca7612fdfd154e6a.png

贝叶斯决策

1cc66fc6d901443132da49f949ff7212.png

朴素贝叶斯分类器

0cc06cc9e0f9548676b1c0199894522f.png

朴素贝叶斯分类器特征向量为离散型随机变量

f394e9e361d63cd198ab4df79a239cc9.png

拉普拉斯平滑

f836e5fd4584014560630605713cb498.png

朴素贝叶斯分类器特征向量为连续型随机变量

9dccb9e21d791dfbf3a5d64ab0f222aa.png

ln函数的性质

632da6b5beeb29306905cf8d657549a0.png

朴素贝叶斯分类器特征向量为连续型随机变量,对于二分类问题,正态贝叶斯分类器

abb8380a3f8e324f10c50acd203a82b0.png

fdb35b50ba535199957f00d4c925ab00.png

协方差朴素贝叶斯

a03c4e1f2f2e46f73b525dd39fdf1568.png

协方差朴素贝叶斯的训练过程

9311a7b6c79f5aafe24921ee68d666d9.png

协方差朴素贝叶斯的预测算法

9765d8bb0d360d243d76f63fc57549fc.png

二、示例程序:

Scikit-learn中提供了多种朴素贝叶斯分类器,其中包括高斯朴素贝叶斯(Gaussian Naive Bayes)分类器。然而,对于鸢尾花数据集,由于其特征是连续型的,因此通常使用的是高斯朴素贝叶斯分类器。

60ce9e0d560e236ab64009b18312dc00.png

以下是在Scikit-learn中使用高斯朴素贝叶斯分类器对鸢尾花数据集进行分类的示例:

# 导入必要的模块
import numpy as np # 导入NumPy库,并将其命名为np,这是一个用于科学计算的库,提供了多维数组和数学函数的支持
import matplotlib.pyplot as plt  # 导入Matplotlib库的pyplot模块,并将其命名为plt,用于创建静态、交互式和动画图表的绘图库。
from sklearn import datasets # 从Scikit-learn库中导入datasets模块,该模块包含了一些标准的数据集,包括机器学习领域常用的一些数据集
from sklearn.naive_bayes import GaussianNB # 从Scikit-learn库中导入朴素贝叶斯分类器的高斯朴素贝叶斯模型。
import matplotlib # 导入Matplotlib库,这是一个用于绘制图表的广泛使用的库。
%matplotlib inline  # 一个Jupyter Notebook魔术命令,用于在Notebook中嵌入Matplotlib图形,并在代码执行后直接在Notebook中显示图形


# 定义生成测试样本点的函数
def make_meshgrid(x, y, h=.02):
  # 计算x、y的最小值和最大值
  x_min, x_max = x.min() - 1, x.max() + 1
  y_min, y_max = y.min() - 1, y.max() + 1
  # 生成均匀网格
  xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
             np.arange(y_min, y_max, h))
  # 返回网格坐标
  return xx, yy


# 定义预测测试样本并显示的函数
def plot_test_results(ax, clf, xx, yy, **params):
  # 对测试样本进行预测  xx.ravel() 和 yy.ravel() 用于将二维的坐标网格
  # 矩阵展平为一维数组。这是因为 clf.predict() 方法接受一维数组形式的输入
  Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
  # 将预测结果转换为网格图像
  Z = Z.reshape(xx.shape)#返回坐标网格 xx 的形状,即一个包含行数和列数的元组。
  # 在网格图像上绘制等高线
  ax.contourf(xx, yy, Z, **params)


# 载入iris数据集
iris = datasets.load_iris()
# 只使用前面两个特征  即鸢尾花数据集的萼片长度和萼片宽度。
X = iris.data[:, :2]#选择所有行(即所有样本)和前两列的数据
# 样本标签值
y = iris.target


# 创建并训练正态朴素贝叶斯分类器
clf = GaussianNB()
clf.fit(X,y)


# 图形标题
title = ('GaussianBayesClassifier')


# 创建图形 fig 是整个图形对象,而 ax 是包含的子图对象 子图的大小为 (5, 5)
fig, ax = plt.subplots(figsize = (5, 5))
# 调整子图布局   0.4 表示子图之间的宽度/高度间距为整个子图宽度/高度的 0.4 倍
plt.subplots_adjust(wspace=0.4, hspace=0.4)


# 获取第0、1个特征的值
X0, X1 = X[:, 0], X[:, 1]


# 生成测试样本点
xx, yy = make_meshgrid(X0, X1)


# 显示测试样本的分类结果
plot_test_results(ax, clf, xx, yy, cmap=plt.cm.coolwarm, alpha=0.8)


#绘制散点图 显示训练样本
# X0 和 X1 分别是训练样本的前两个特征变量
# c=y 指定了散点的颜色,使用了目标标签 y 中的类别信息。不同的类别用不同的颜色表示。
# cmap=plt.cm.coolwarm 指定了颜色映射,用于将类别映射到具体的颜色。
# s=20 设置了散点的大小为 20。
#edgecolors='k' 设置了散点的边缘颜色为黑色 ('k' 表示黑色)。
ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors='k')


# 设置图形属性
ax.set_xlim(xx.min(), xx.max())
ax.set_ylim(yy.min(), yy.max())
ax.set_xlabel('x1')
ax.set_ylabel('x2')
ax.set_xticks(())# 将 x 轴的刻度标签设为空
ax.set_yticks(())
ax.set_title(title)


# 显示图形
plt.show()

707ec4e195ee2b7f927269ce55ea872a.png

三、贝叶斯分类器的应用

f62a2b8759ee7dd01213b33843e77fc9.png

参考网址:
https://programmer.group/principle-of-machine-learning-bayesian-classifier-and-its-sklearn-implementation.html Principle of machine learning Bayesian classifier and its sklearn implementation --- 机器学习贝叶斯分类器原理及其sklearn实现 (programmer.group)

https://zhuanlan.zhihu.com/p/25462307 OpenCV机器学习——朴素贝叶斯NBC - 知乎 (zhihu.com)

https://blog.csdn.net/qinzhongyuan/article/details/106434854 鸢尾花(Iris)数据集_iris数据集-CSDN博客

https://zhuanlan.zhihu.com/p/480326305 数据集 |鸢尾花数据集 - 知乎 (zhihu.com)

The End

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Postgresql源码(116)提升子查询案例分析

0 总结 对于SQL:select * from student, (select * from score where sno > 2) s where student.sno s.sno; pullup在pull_up_subqueries函数内递归完成,分几步: 将内层rte score追加到上层rtbable中:rte1是student、rte2带…

汽车智能座舱/智能驾驶SOC -2

第二篇(笔记)。 未来智能汽车电子电气将会是集中式架构(车载数据中心)虚拟化技术(提供车载数据中心灵活性和安全性)这个几乎是毋庸置疑的了。国际大厂也否纷纷布局超算芯片和车载数据中心平台。但是演进需…

向上转型 向下转型 重写 多态 ---java

目录 一. 向上转型 1.1 概念 1.2 语法格式 1.3 动态绑定引入 1.4 重写的引入 1.5向上转型的使用方式 方式一: 直接赋值 方式二: 通过传参,进行向上转型(多态引入) 方法三:通过返回值, 进行向上转型 二. 重写 2.1 概念 2.2 重写的格式 2.3 重写的规则 【重写和重…

【Spring篇】Spring注解式开发

本文根据哔哩哔哩课程内容结合自己自学所得,用于自己复习,如有错误欢迎指正; 我在想用一句话激励我自己努力学习,却想不出来什么惊为天人、精妙绝伦的句子,脑子里全是上课老师想说却没想起的四个字 “ 唯手熟尔 ”&am…

微服务开发中,使用AOP和自定义注解实现对权限的校验

一、背景 微服务开发中,暴露在外网的接口,为了访问的安全,都是需要在http请求中传入登录时颁发的token。这时候,我们需要有专门用来做校验token并解析用户信息的服务。如下图所示,http请求先经过api网关,网…

渗透工具---BurpSuite 插件开发之HelloWorld

本文主要记录如何利用burp官方的新版API即MontoyaApi 写helloworld(上一篇的demo使用旧版api写的,这篇及后续开发将采用新版api) 先看效果图 更多详细内容见下方 这里有更详细更全面的代码内容 以及配置相关的内容 https://mp.weixin.qq.co…

【HarmonyOS】API6上JS实现视频播放全屏播放时,会回到之前界面

【关键字】 API6 / 视频播放 / 全屏播放异常 【问题现象】 开发者在API6上用JS实现视频播放器点全屏播放后,不是全屏效果,实际效果是变成了横屏并返回到首页。 具体代码实现是参考video媒体组件指南。 【问题分析】 JS实现视频播放器有Codelab代码示…

基于springboot实现乒乓球预约管理系统项目【项目源码】计算机毕业设计

基于springboot实现乒乓球预约管理系统演示 系统的开发环境 浏览器:IE 8.1(推荐6.0以上) 开发使用语言:JAVA JDK版本:JDK_8 数据库管理系统软件:Mysql 运行平台:Windows 7 运行环境&#…

HarmonyOS ArkTS语言,运行Hello World(二)

一、认识DevEco Studio界面 进入IDE后,我们首先了解一下基础的界面。整个IDE的界面大致上可以分为四个部分,分别是代码编辑区、通知栏、工程目录区以及预览区。 代码编辑区 1、中间的是代码编辑区,你可以在这里修改你的代码,以…

CRMEB Pro版 v3.0详情预告(附件crmebPro功能思维导图)

首先,先来看看本次CRMEB Pro版 v3.0 的整体升级框架 翩若惊鸿 CRMEB Pro版 从设计之初,就十分重视用户体验,在保证强大功能的同时,本次也为大家带来了领先于业界的UI 3.0,一目惊鸿。 一、风格升级 1、圆角风格 商城…

轻松整理文件夹,将视频文件全部归类到另一个文件夹!

如果你需要整理文件夹中的文件,将同一类别的文件归纳到一起,可以更加方便地管理和查找。现在,我们有一个简单而实用的方法,可以将文件夹中的所有视频文件归类到另一个文件夹中,让你的文件管理更加有序和高效。 首先&am…

动能方案 | 15693协议的读卡器应用 DP1363F 替代RC663

15693协议是一种高频(13.56 MHz)射频识别(RFID)协议,广泛满足无线识别和数据传输领域。其特点包括较远的读取范围、支持快速数据传输、与多个标签的兼容等,产生于不同行业有着广泛的应用,包括但…

10个即时通讯软件开发项目经验教训

即时通讯软件开发在现代社交和商务交流中扮演着重要的角色。然而,这个领域也充满了挑战。在本文中,我将探讨即时通讯软件开发的重要性以及开发者面临的挑战,并分享一些应对策略。 10个经验教训 明确需求:在开始开发之前&#xf…

CRM中线索的概念和使用技巧

CRM中线索是什么?如何管理线索?CRM系统中线索通常指通过展会、线上、广告等方式获取到的原始客户信息。这些潜在的客户信息经过市场培育、SDR筛选,进而成为一个合格商机。下面我们从3个方面介绍什么是线索管理。 1.线索来源 线索来源渠道非…

来吧,SpringBoot的自动配置原理都在这里了

💗推荐阅读文章💗 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》🌺MySQL系列🌺👉2️⃣《MySQL系列教程》🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》…

ELK企业级日志分析平台

目录 一、elasticsearch 1、集群部署 2、cerebro部署 3、elasticsearch-head插件部署 4、elasticsearch集群角色分类 二、logstash 1、部署 2、elasticsearch输出插件 3、file输入插件 4、file输出插件 5、syslog 插件 6、多行过滤插件 7、grok过滤 三、kibana数…

vr小鼠虚拟解剖实验教学平台减少了受感染风险

家畜解剖实验教学是培养畜牧兽医专业学生实际操作能力的专业教学活动中的核心手段。采取新型教学方式与手段,合理设置实验教学内容,有助于激发学生的操作积极性,促进实践教学的改革。 家畜解剖VR仿真教学是一种借助VR虚拟现实制作和web3d开发…

谷歌Freshness新鲜度算法:如何利用它提升网站排名?

今天我们就来深入了解下Google Freshness算法核心,结合案例研究和实用技巧,为我们自己的网站优化提供一些思路。 Google新鲜度算法和QDF Google的新鲜度算法和查询需求的新鲜度(Query Deserves Freshness, QDF)模型是为了改善特…

爱创科技总裁谢朝晖荣获“推动医药健康产业高质量发展人物”

中国医药市场规模已经成为全球第二大医药市场,仅次于美国。近年来,随着中国经济的持续增长和人民生活水平的提高,医药市场需求不断扩大。政府对医疗卫生事业的投入也在不断加大,为医药行业的发展创造了良好的政策环境。为推动医药…

和田2023年群众舞蹈大赛总决赛圆满落幕!

11月19日,由中共和田地委宣传部主办,地区文旅局承办,地区文化馆、各县市文旅局协办,北京市援疆和田指挥部支持的和田地区2023年“大地欢歌 舞动和田”群众舞蹈大赛总决赛在和田市新夜市圆满落幕,比赛最终决出一等奖1名…