《机器学习》 贝叶斯分类器 原理、参数讲解及代码演示

目录

一、贝叶斯算法

1、简介

2、贝叶斯算法具有以下特点:

二、贝叶斯原理

1、正向概率(先验概率)

 例如:

2、逆向概率(后验概率)

3、公式

1)实例1

2)实例2

• 目标:

• 核心:

• 计算:

三、参数讲解

1、用法

2、参数

1)alpha 控制模型合成时的平滑度

2)fit_prior 是否学习类的先验概率

3)class_prior 各个类别的先验概率

四、代码实现

1、文件内容

2、完整代码

输出结果:


一、贝叶斯算法

1、简介

        贝叶斯算法是一种基于贝叶斯定理的统计学习方法。在机器学习中,贝叶斯算法用于推断模型参数或预测未知数据的概率分布。

        贝叶斯定理是概率论中的一个基本定理,用于描述在已知某些条件下,另一事件发生的概率。贝叶斯算法利用该定理在训练阶段根据样本数据和先验知识估计参数的后验分布,然后在预测阶段根据后验分布计算未知数据的概率分布。

        贝叶斯算法的基本思想将概率视为对不确定性的衡量,并通过不断更新先验概率来得到后验概率。

2、贝叶斯算法具有以下特点:

        1)能够从少量的样本数据中进行学习,因为贝叶斯算法利用了先验分布的知识;

        2)能够处理多模态数据,即对于不同的预测结果,贝叶斯算法可以给出概率分布而不仅仅是一个确定的结果;

        3)能够逐步学习和更新模型,因为贝叶斯算法可以通过后续样本数据来更新模型的参数和概率分布。

二、贝叶斯原理

1、正向概率(先验概率)

        正向概率指的是在给定模型参数或假设的情况下,计算观测数据的概率。换句话说,正向概率是从模型或假设到观测数据的概率。

 例如:

        假设袋子里有10个白球,90个黑球,然后从袋子里拿出一个球,拿出的白球的概率是多少?

                p(摸出白球)= 10/100 = 1/10

2、逆向概率(后验概率)

        逆向概率(也称为后验概率)则是在给定观测数据的情况下,计算模型参数或假设的概率。逆向概率是指从观测数据到模型或假设的概率。

3、公式

求B的条件下A的概率

1)实例1

        已知在所有男子中有5%患色盲,在所有女子中有0.25%患色盲,随机抽取一个人是色盲,其为男子的概率是多大?(男女人数相等)

        A:抽到男生 B:抽到女生 C:抽到色盲

p(A|C)= P(C|A) * P(A) / P(C) = 5% * 0.5 / ( 0.5 * 5% + 0.5 * 0.25%) = 95%

2)实例2

        贝叶斯如何进行样本数据进行计算实现预测的?

实例:一个包含3个特征(A、B、C)和一个类别标签的简单数据集如下:

• 目标:

        使用朴素贝叶斯分类器来预测一个新的样本(特征A=1,B=1,C=0)(特征A=0,B=0,C=1)的类别。

• 核心:

        把输入当做条件,结果为0的概率是多少,结果为1的概况是多少

• 计算:

        求P(D=0 | A=1,B=1,C=0) 以及 P(D=1 | A=1,B=1,C=0)概率

P(D=0 | A=1,B=1,C=0) = P( A=1,B=1,C=0 | D=0) * P(D=0) / P(A=1,B=1,C=0)

        = P(A=1| D=0) * P(B=1| D=0) * P(C=0| D=0) * P(D=0) / P(A=1,B=1,C=0)

P(D=1 | A=1,B=1,C=0) = P( A=1,B=1,C=0 | D=1) * P(D=1) / P(A=1,B=1,C=0)

        = P(A=1| D=1) * P(B=1| D=1) * P(C=0| D=1) * P(D=1) / P(A=1,B=1,C=0)

有了上述公式,即可计算类别的先验概率

        P(D=0) = 3/6 = 0.5

        P(D=1) = 3/6 = 0.5

然后计算每个特征在每个类别下的条件概率:

此时即可计算给定特征值下每个类别的后验概率,得到如下结果:

三、参数讲解

1、用法

class sklearn.native_bayes.MulitnomialNB(alpha=1.0,fit_prior=True,class_prior=None)

  MultinaomialNB 表示多项式分布的朴素贝叶斯

2、参数

1)alpha 控制模型合成时的平滑度

        alpha是一个浮点数,用于解决在训练数据中出现零概率问题。

作用:平滑是一种防止过拟合的技术,特别是在处理稀疏数据集或者未出现在训练集中的特征时。

影响:alpha值过大会影响模型模型复杂度,过大则导致预测概率减少,可能导致分类器更稳定,但是准确率降低,反之则导致过拟合现象。

2)fit_prior 是否学习类的先验概率

        当为True时,模型会根据训练集计算每个类的先验概率,如果训练集的某个类的样本数较少,则可能导致计算出的先验概率非常小,从而导致该类样本在分类时被忽略,影响模型分类效果。(有样本不均衡情况下,少用fit_prior)

3)class_prior 各个类别的先验概率

        如果没有指定,则模型会根据数据自动学习

四、代码实现

1、文件内容

        一共100条数据,第一列为序号,最后一列为类别

2、完整代码

import pandas as pd# 绘制混淆矩阵
def cm_plot(y, yp):    # 可视化混淆矩阵,网上都是包装好的,可以直接复制使用from sklearn.metrics import confusion_matriximport matplotlib.pyplot as pltcm = confusion_matrix(y, yp)plt.matshow(cm, cmap=plt.cm.Blues)plt.colorbar()for x in range(len(cm)):for y in range(len(cm)):plt.annotate(cm[x, y], xy=(y, x), horizontalalignment='center',verticalalignment='center')plt.ylabel('True label')plt.xlabel('Predicted label')return plt# 导入数据,设置参数header,表示没有标题行
data = pd.read_csv("iris.csv",header=None)# data = data.drop(0,axis=1)
# 取出除去第一列的所有数据,再赋值给data
data = data.iloc[:,1:] 
x = data.iloc[:,:-1]  # 取出所有的行,列为除去最后一列的所有特征
y = data.iloc[:,-1]   # 取出所有行,以及最后一列的数据from sklearn.model_selection import train_test_split    # 对原始数据进行随机切分,得到测试集和训练集数据x_train_w,x_test_w,y_train_w,y_test_w = train_test_split(x,y,test_size=0.2,random_state=0)from sklearn.naive_bayes import MultinomialNB  # 导入贝叶斯类classifier = MultinomialNB(alpha=1)  # 建立贝叶斯模型classifier.fit(x_test_w,y_test_w)   # 导入训练集数据对其进行训练train_predicted = classifier.predict(x_train_w)   # 输入测试集进行测试
cm_plot(y_train_w,train_predicted)   # 可视化,绘制混淆矩阵test_predicted = classifier.predict(x_test_w)  
cm_plot(y_test_w,test_predicted)from sklearn import metricsprint(metrics.classification_report(y_train_w, train_predicted))  # 分别打印分类报告
print(metrics.classification_report(y_test_w, test_predicted))
输出结果:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轻松获得ADSL代理服务

ADSL 代理服务接入常见问答 在当今激烈的网络爬虫与反爬虫斗争中,各大网站和应用程序采取的风险管理手段愈加严格,其中最常见的一种措施是 IP 封禁。 为了有效应对 IP 封禁带来的挑战,设置代理服务成为一种非常有效的解决方案。配置完代理后…

【计算机网络】电路交换、报文交换、分组交换

电路交换(Circuit Switching):通过物理线路的连接,动态地分配传输线路资源 ​​​​

【2024】10个好用的AI搜索引擎大盘点

在2024年,随着人工智能技术的飞速发展,AI搜索引擎已经成为我们日常生活中不可或缺的一部分。这些基于人工智能技术的搜索引擎不仅提供了更快速、更准确的搜索体验,还通过自然语言处理(NLP)和机器学习(ML&am…

快速学习“堆“排序(C语言数据结构)

前言: 堆的实现其实并不难,难的是要用堆实现排序,也就是堆的运用。 下面需要探究一下堆的排序是怎样的。 如何利用堆进行升序或者降序的排序。 "堆排序": 原理: 例如:此时要将数组里的数组int a…

Leetcode面试经典150题-5.最长回文子串

解法都在代码里,不懂就留言或者私信 class Solution {public static String longestPalindrome(String s) {if(s null || s.length() 0) {return null;}//加工字符串,例如abcdcba加工成#a#b#c#d#a#b#c#d#String str getManacherString(s);char[] str…

【生日视频制作】滑行飞机机身改字,轻松修改文字AE模板修改文字软件生成器教程特效素材【AE模板】

飞机机身生日视频制作教程AE模板改文字特效广告生成器素材玩法 怎么如何做的【生日视频制作】滑行飞机机身改字,轻松修改文字AE模板修改文字软件生成器教程特效素材玩法【AE模板】 生日视频制作步骤: 安装AE软件下载AE模板把AE模板导入AE软件修改图片或…

基于Java+SpringBoot+Vue的知识管理系统

基于JavaSpringBootVue的知识管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 哈喽…

利用“2+1链动模式小程序AI智能名片S2B2C商城源码”优化企业参与外部社群策略

摘要:在当今数字化时代,企业参与外部社群已成为其市场扩张、品牌塑造及用户增长不可或缺的一环。然而,面对浩如烟海的社群类型,包括行业论坛、地区性论坛、特定兴趣爱好的论坛以及短视频网站等,如何精准选择并有效介入…

计算机网络-PIM-SM组播实验

一、概述 目前为止我们学习了组播转发网络中的PIM协议,PIM模型有两种: PIM-DM主要使用在网络规模较小,用户集中的组播网络中。 PIM-SM主要使用在网络规模较大,用户较为分散的组播网络中。PIM-SM基于组播模型又可以分为PIM-SM&…

重装系统前如何备份数据?让重装无后顾之忧

在日常使用电脑的过程中,有时我们可能需要重装系统以解决一些难以通过常规手段解决的问题。然而,在重装系统之前,最重要的一步就是备份数据,以防止重要信息的丢失。本文将详细介绍如何在重装系统前进行数据备份,确保您…

周报(8.12-8.18)

周报(8.12-8.18) 本周工作 DD-Net学习与代码复现 DD-Net网络结构如上图所示。DD-Net也有一个为处理OpenFWI数据的版本:DD-Net70: 与传统DL-FWI不同的是,DD-Net同时拥有两个解码器,第一个解码器的目标是传统的速度模型&#xff0…

力扣第71题:简化路径 放弃栈模拟,选择数据流√(C++)

目录 题目 思路 解题过程 复杂度 Code 题目 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 / 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点&#xff…

医生隐瞒病情属于什么行为?

根据《民法典》第一千二百二十二条的规定,患者在诊疗活动中受到损害,有下列情形之一的,推定医疗机构有过错:   (一)违反法律、行政法规、规章以及其他有关诊疗规范的规定;   (二…

LLMs 基础知识 | BERT 模型族

本文主要文章是解决蚂蚁金服携手上海财经大学,共同出具大预言模型白皮书一文中的部分模型问题。 01 Slef-Attention 注意力机制,注意力权重可以看作是输入对输出的重要程度。这里注意,所谓注意力,即模型认为该单词有多值得被注意…

基于BlockQueue的生产消费模型及Linux中的信号量

基于BlockQueue的生产消费模型 Task.hpp #pragma once#include<cstdio> #include<iostream> #include<string> #include<functional>using namespace std; class CalTask {using func_tfunction<int(int,int,char)>;//typedef function<int(…

妙用 Batch,StarRocks 存算分离实时性能起飞

前言 当大家提到存算分离时&#xff0c;尤其是考虑后端使用 AWS S3 为代表的对象存储作为数据存储时&#xff0c;直觉就是性能拉胯&#xff0c;只能用作批量数据处理场景&#xff0c;至少这是我在跟很多用户交流时获得的第一感受。而 StarRocks 作为一个具备强实时性数据分析引…

Vue实现zip压缩下载

1&#xff0c;安装依赖npm //jszip是一个用于创建、读取和编辑.zip文件的JavaScript库 https://stuk.github.io/jszip/ npm install jszip https://www.npmjs.com/package/file-saver npm install file-saver 2&#xff0c;在所需的页面中引入对应包 import JSZip from &…

【启明智显分享】智能音箱AI大模型一站式解决方案重塑人机交互体验,2个月高效落地

2010年左右&#xff0c;智能系统接入音箱市场&#xff0c;智能音箱行业在中国市场兴起。但大潮激荡&#xff0c;阿里、小米、百度三大巨头凭借自身强大的资本、技术、粉丝群强势入局&#xff0c;形成三足鼎立态势。经过几年快速普及&#xff0c;智能音箱整体渗透率极高&#xf…

【课件分享】电子档案库房——构筑档案数字资源长期保存的安全防线

关注我们 - 数字罗塞塔计划 - 如此重磅的会议&#xff0c;如此高能的干货&#xff0c;小编已经迫不及待第一时间分享给大家&#xff0c;一起来看看杨博士在学术交流活动上的演讲内容吧。 01 课件分享 一、背景现状 二、总体设计 详细视频请在公众号中观看 三、解决方案 四、应…

汽车线束品牌服务商推荐-力可欣:致力于汽车连接线束和汽车连接器的开发、生产和应用

汽车线束品牌服务商推荐-力可欣&#xff1a;致力于汽车连接线束和汽车连接器的开发、生产和应用