06_机器学习算法_朴素贝叶斯

在这里插入图片描述

1. 朴素贝叶斯的介绍与应用

1.1 朴素贝叶斯的介绍

朴素贝叶斯算法(Naive Bayes, NB)是应用最为广泛的分类算法之一。它是基于贝叶斯定义和特征条件独立假设的分类方法。由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数学基础,以及稳定的分类效率。NB模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。当年的垃圾邮件分类都是基于朴素贝叶斯分类器识别的。

什么是条件概率,我们从一个摸球的例子来理解。我们有两个桶:灰色桶和绿色桶,一共有7个小球,4个蓝色和3个紫色,分布如下图:

在这里插入图片描述

从这7个球中,随机选择1个球是紫色的概率p是多少?选择过程如下:

  • 先选择桶
  • 再从选择的桶中选择一个球

p ( 球 = 紫色 ) = p ( 选择桶 ) ∗ p ( 从灰桶中选择紫色 ) + p ( 选择绿桶 ) ∗ p ( 从绿桶中选择紫色 ) = 1 2 ∗ 2 4 + 1 2 ∗ 1 3 p(球 = 紫色)=p(选择桶) * p(从灰桶中选择紫色)+p(选择绿桶)*p(从绿桶中选择紫色)=\frac{1}{2}*\frac{2}{4}+\frac{1}{2}*\frac{1}{3} p(=紫色)=p(选择桶)p(从灰桶中选择紫色)+p(选择绿桶)p(从绿桶中选择紫色)=2142+2131

上述我们选择小球的过程就是条件概率的过程,在选择桶的颜色的情况下是紫色的概率,另一种计算条件概率的方法是贝叶斯准则。

贝叶斯公式是英国数学家提出的一个数据公式:

p ( A ∣ B ) = p ( A , B ) p ( B ) = p ( B ∣ A ) ∗ p ( A ) ∑ a ∈ ℑ A p ( B ∣ a ) ∗ p ( a ) p(A|B)=\frac{p(A,B)}{p(B)}=\frac{p(B|A)*p(A)}{\sum_{a\in\Im_{A}}p(B|a)*p(a)} p(AB)=p(B)p(A,B)=aAp(Ba)p(a)p(BA)p(A)

p ( A , B ) : p(A,B): p(A,B) 表示事件A和事件B同时发生的概率。

p ( B ) : p(B): p(B) 表示事件B发生的概率,叫做先验概率; p ( A ) : p(A): p(A) 表示事件A发生的概率。

p ( A ∣ B ) : p(A|B): p(AB) 表示当事件B发生的条件下,事件A发生的概率叫做后验概率。

我们用一句话理解贝叶斯:世间很多事都存在某种联系,假设事件A和事件B。人们常常使用已经发生的某个事件去推断我们想要知道的之间的概率。例如,医生在确诊的时候,会根据病人的舌苔、心跳等来判断病人得了什么病。对病人来说,只会关注得了什么并病,医生会通过已经发生的事件来确诊具体的情况。这里就用到了贝叶斯思想,A是已经发生的病人症状,在A发生的条件下是B_i的概率。

1.2 朴素贝叶斯的应用

朴素贝叶斯算法假设所有特征的出现相互独立互不影响,每一特征同等重要,又因为其简单,而且具有很好的可解释性。一般相对于其他精心设计的更复杂的分类算法,朴素贝叶斯分类算法是学习效率和分类效果较好的分类器之一。朴素贝叶斯算法一般应用在文本分类,垃圾邮件的分类,信用评估,钓鱼网站检测等

2. 贝叶斯分类算法实践

2.1 鸢尾花数据集

2.1.1 库函数导入

import warnings
warnings.filterwarnings('ignore')
import numpy as np

# 加载鸢尾花数据集
from sklearn import datasets

# 导入高斯朴素贝叶斯分类器
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split

2.1.2 数据导入&分析

X, y = datasets.load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

我们需要计算两个概率分别是:条件概率: P ( X ( i ) = x i ∣ Y = c k ) P(X^{(i)}=x^{i}|Y=c_k) P(X(i)=xiY=ck) 和类目 c k c_k ck 的先验概率: P ( Y = c k ) P(Y=c_k) P(Y=ck)

通过分析发现训练数据是数值类型的数据,这里假设每个特征服从高斯分布,因此我们选择高斯朴素贝叶斯来进行分类计算。

2.1.3 模型训练

# 使用高斯朴素贝叶斯进行计算
clf = GaussianNB(var_smoothing=1e-8)
clf.fit(X_train, y_train)
GaussianNB(var_smoothing=1e-08)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
GaussianNB(var_smoothing=1e-08)

2.1.4 模型评估和预测

# 评估
y_pred= clf.predict(X_test)
acc = np.sum(y_test == y_pred) / X_test.shape[0]
print("Test Acc :%.3f" % acc)

# 预测
y_proda = clf.predict_proba(X_test[:1])
print(clf.predict(X_test[:1]))
print("预计的概率值:", y_proda)
Test Acc :0.967
[2]
预计的概率值: [[1.63542393e-232 2.18880483e-006 9.99997811e-001]]

2.1.5 原理简析

高斯朴素贝叶斯假设每个特征都服从高斯分布,我们把一个随机变量X服从数学期望为μ,方差为σ2的数据分布称为高斯分布。对于每个特征我们一般使用平均值来估计μ和使用所有特征的方差估计σ2。

P ( X ( i ) = x ( i ) ∣ Y = c k ) = 1 2 π σ y 2 e x p ( − ( x ( i ) − μ c k ) 2 2 σ c k 2 ) P(X^{(i)}=x^{(i)}|Y=c_k)=\frac{1}{\sqrt{2\pi\sigma_{y}^{2}}}exp(-\frac{(x^{(i)}-\mu_{c_k})^{2}}{2\sigma_{c_k}^{2}}) P(X(i)=x(i)Y=ck)=2πσ

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

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

相关文章

上传文件,服务器报500错误

项目场景: 今天项目上出现一个耗时比较长的问题,但是问题很简单,一开始没注意,导致耗时很久,到底是咋回事儿呢,请看下文~~ 问题描述 用户使用APP上传图片,出现 附件上传失败:服务器响应失败 的…

一个强大的在线解析网站,无需登录,只用把视频链接粘贴进去就能免费解析下载视频。

TiQu.cc是什么? TiQu.cc是一个强大的在线工具,让用户可以从包括Facebook、VK、Twitter、Tiktok、Instagram等在内的100多个平台下载他们喜爱的视频。不论是音乐、电视节目、电影、短片还是个人上传的内容,TiQu.cc都可以帮助您随时随地以离线…

错误、调试和测试

在程序运行过程中,总会遇到各种各样的错误。 有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。 有的错误是用户输入造成的,比如让用户输入email地…

无独立显卡如何安装Pytorch

以前我是直接在colab中使用pytorch,非常方便,今天折腾了一上午,终于搞定了pytorh的安装和环境设置,分享下我的安装流程,遇到的问题和解决方案。 1. 用pip安装Pytorch 打开cmd窗口(按win R)&a…

每日一练 2025.5.16

题目; 给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。注意: 给定数字的范围是 [0, 108] 解题&#…

平价蓝牙耳机怎么选?四大最新宝藏平价蓝牙耳机推荐

面对市场上众多品牌和型号的蓝牙耳机,如何在有限的预算内选择一款性价比高、性能出色的平价蓝牙耳机,一直以来都是一个值得探讨的问题,作为蓝牙耳机大户的我,今天我就为大家推荐四大最新宝藏平价蓝牙耳机,帮助你在海量…

如何修改照片的dpi值?在线图片更改dpi快捷方法

不少小伙不知道如何去改变图片分辨率,因为能用的到分辨率dpi的地方也不多,但是当我们在求职、考公或者是打印照片的时候,就经常看到会要求图片分辨率为300dpi以上了,本文将分享一款图片处理工具,它能快速完成修改图片分…

第三十二天 | 46.全排列 47.全排列||

终于进入排列!(之前都是组合) 排列和组合的区别:在数学上的区别都懂,主要是看在代码实现上有什么区别 题目:46.全排列 树型结构比较简单 用used标记某一元素是否使用过。在组合问题中,其实是…

在pycharm中运行jupyter报错run_error解决办法-极速上手

注:此方法不是永久性的修复,只是临时性修复;永久性的修复方法没有找到! 报错 解决办法 1.打开任务管理器 2. 找到python.exe进程 结束任务之后重新在pycharm中重启jupyter,直接启动成功 3.检验 运行成功没有报错!

图片中的表格转成word用什么工具好?

2024年5月16日,周四上午 我推荐用免费的腾讯OCR表格识别v3体验网站 用手机文档模式拍下并转成黑白后,成功识别的概率还是非常大的 OCR Demo (tencent.com)https://ocrdemo.cloud.tencent.com/识别成功后,复制识别结果并粘贴到word文档里面就…

k8s对接nfs共享存储

1. 规划 节点功能节点IP数据目录服务端192.168.99.210/data客户端192.168.99.211 2. 搭建NFS服务 2.1 安装服务端 若NFS已搭建完成,可跳过此节。 在服务端节点上执行如下操作: 安装NFS、RPC服务 yum install -y nfs-utils rpcbind创建共享目录 # 此…

儿童护眼台灯哪个牌子好,适合儿童使用的护眼台灯推荐

护眼台灯在近几年成为家长和经常与电子设备打交道的人士中备受瞩目的家用电器。对于有孩子的家庭而言,它几乎成为了必备品,许多消费者已经对其有了一定的了解并进行了购买。然而,仍有部分家长对护眼台灯的效果和重要性缺乏充分认识&#xff0…

从光伏监测到智慧农业,漫途LoRa产品多领域应用

随着物联网(IoT)技术的飞速发展,对数据传输的稳定性和低功耗特性的需求日益增加。在这一背景下,LoRa凭借更远的传输距离以及出色的抗干扰能力,展现出了显著的优势。这种特性使得LoRa在复杂多变的环境中表现尤为突出&am…

摸鱼大数据——大数据导论

大数据导论 1、概念 大数据时代: 万物皆数据 ​ 数据概念: 人类的行为及产生的事件的一种记录称之为数据 ​ 数据价值: 对数据的内容进行深入分析,可以更好的帮助了解事和物在现实世界的运行规律 2、大数据诞生 大数据的诞生: 跟随着互联网的发展的,当全球互联…

20232831 袁思承 2023-2024-2 《网络攻防实践》第10次作业

目录 20232831 袁思承 2023-2024-2 《网络攻防实践》第10次作业1.实验内容2.实验过程(1)SEED SQL注入攻击与防御实验①熟悉SQL语句②对SELECT语句的SQL注入攻击③对UPDATE语句的SQL注入攻击④SQL对抗 (2)SEED XSS跨站脚本攻击实验…

5年增100倍6秒卖1瓶酒,酣客的“FFC模式”是什么

酣客酱酒销售模式,白酒FFC模式,白酒新零售模式设计 坐标:厦门,我是易创客肖琳 深耕社交新零售行业10年,主要提供新零售系统工具及顶层商业模式设计、全案策划运营陪跑等。 不知从何时起,营销圈开始有这么一…

docker容器与centos宿主机时间一致设置

1、查看宿主机的系统时间 date -R 2、进入到容器中查看容器系统时间 docker exec -it storage /bin/bash date -R 3、查看容器系统时区 cat /etc/timezone 4、查看宿主机所在时区 timedatectl 5、创建容器时间,并退出进入的容器 6、将宿主日期复制到容器内部&…

Git—常用命令

官方 Git - Book (git-scm.com) 常用命令 命令作用git config --global user.name 用户名设置用户作者git config --global user.email 邮箱设置用户邮箱 git init初始化本地仓库git status查看本地仓库状态 git add 文件名 添加到暂存区git commit -m "提交日志…

基于PHP+MySQL组合开发的多用户自定义商城系统源码 附带源代码包以及搭建教程

系统概述 互联网技术的飞速发展,电子商务已成为人们日常生活中不可或缺的一部分。商城系统作为电子商务的核心,其开发技术和用户体验直接影响着电商平台的竞争力和用户满意度。本文旨在介绍一个基于PHPMySQL组合开发的多用户自定义商城系统,…

深入理解 House of Cat

Index 序言利用 FSOP 调用 House of Cat利用条件伪造IO流条件完整调用链分析 模板System (one_gadget) 模板ORW模板 Demo & Exp利用 __malloc_assert 调用 House of Cat例题:题目思路Exp 序言 原文章:深入理解 House of Cat 随着 GNU 持续不断的更…