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

news2024/11/16 12:05:59

目录

一、贝叶斯算法

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_matrix
    import matplotlib.pyplot as plt

    cm = 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 metrics

print(metrics.classification_report(y_train_w, train_predicted))  # 分别打印分类报告
print(metrics.classification_report(y_test_w, test_predicted))
输出结果:

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

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

相关文章

基于初始运行数据的电池循环寿命预测

这个例子展示了如何使用线性回归(一种监督机器学习算法)预测快速充电锂离子电池的剩余循环寿命。使用基于物理的建模方法预测锂离子电池的循环寿命是非常复杂的,因为不同的操作条件和显著的设备可变性,即使是来自同一制造商的电池。对于这种情况&#xf…

FPGA上板项目(四)——FIFO测试

目录 实验内容实验原理FIFO IP 核时序绘制HDL 代码仿真综合实现上板测试 实验内容 理解 FIFO 原理调用 FIFO IP 核完成数据读写 实验原理 FIFO:First In First Out,先入先出式数据缓冲器,用来实现数据先入先出的读写方式。可分类为同步 FI…

论文翻译 | 通过逻辑增强大型语言模型中的零样本思维链推理

摘要 大型语言模型的最新进展已经展示了它们在各个领域的卓越泛化性。然而,他们的推理能力仍有很大的提高空间,特别是在面对需要多步骤推理的场景时。虽然大型语言模型拥有广泛的知识,但它们的推理往往不能有效地利用这些知识来建立连贯的思维…

机器学习/数据分析--通俗语言带你入门决策树(结合分类和回归案例)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 机器学习是深度学习和数据分析的基础,接下来将更新常见的机器学习算法注意:在打数学建模比赛中,机器学习用的也很多&a…

[LeetCode]根据决策树设计代码解决dfs

目录 46. 全排列 - 力扣(LeetCode) 78. 子集 - 力扣(LeetCode) 46. 全排列 - 力扣(LeetCode) 决策树:根据题意可以知道,全排列需要找到数组内元素不重复的所有排列方式&#xff0c…

Java面向接口编程——开发打印机

题目: 墨盒:彩色、黑白 纸张类型:A4、B5 墨盒和纸张都不是打印机厂商提供的 打印机厂商要兼容市场上的墨盒、纸张 墨盒接口: public interface InkBox {String colorInkBox(); // 墨盒颜色} 纸张接口: public i…

Centos 添加双网卡 (生产环境配置记录)

1、在虚拟机中添加网卡2 [rootntpserver network-scripts]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo …

前端(Vue)tagsView(子标签页视图切换) 原理及通用解决方案

文章目录 tagsView 方案总结tagsView 原理分析创建 tags 数据源生成 tagsViewtagsView 国际化处理contextMenu 展示处理contextMenu 事件处理处理 contextMenu 的关闭行为处理基于路由的动态过渡 tagsView 方案总结 整个 tagsView 整体来看就是三块大的内容&#xff1a; tags…

【SAM下游任务微调】TS-SAM: Fine-Tuning Segment-Anything Model for Downstream Tasks

TS-SAM: Fine-Tuning Segment-Anything Model for Downstream Tasks 论文链接&#xff1a;https://arxiv.org/pdf/2408.01835 代码链接&#xff1a;https://github.com/maoyangou147/TS-SAM 一、摘要 基于适配器的微调方法已经被研究用于改进SAM在下游任务上的性能。然而&am…

【2024】Datawhale X 李宏毅苹果书 AI夏令营 Task1

本文是关于李宏毅苹果书“第1章 机器学习基础”学习内容的记录。 1、术语解释 术语解释机器学习&#xff08;Machine Learning, ML&#xff09;机器学习是一种人工智能&#xff08;AI&#xff09;技术&#xff0c;它使计算机能够从数据中学习并做出决策或预测&#xff0c;而无…

【python计算机视觉编程——3.图像到图像的映射】

python计算机视觉编程——3.图像到图像的映射 3.图像到图像的映射3.1 单应性变换3.1.1 直接线性变换算法&#xff08;DLT&#xff09;3.1.2 仿射变换 3.2 图像扭曲3.2.1 图像中的图像3.2.2 分段仿射扭曲3.2.3 图像配准 3.3 创建全景图3.3.1 RANSAC3.3.2 稳健的单应性矩阵估计3.…

【二叉树】LC405-删除二叉搜索树的节点

文章目录 1 删除二叉树的节点思路其他代码参考 1 删除二叉树的节点 https://leetcode.cn/problems/delete-node-in-a-bst/description/ 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。…

探索全球设计灵感:六大海外设计平台

海外设计网站对于设计师而言&#xff0c;不仅是灵感的源泉&#xff0c;更是专业成长的加速器。这些平台聚集了全球创意人士&#xff0c;提供了一个分享和发现最新设计趋势的环境。设计师可以通过这些网站学习行业内的创新技术&#xff0c;参与设计挑战&#xff0c;提升个人设计…

End-to-End视觉里程计新突破:从运动模糊图像中精确估计相机姿态

更多优质内容&#xff0c;请关注公众号&#xff1a;智驾机器人技术前线 1.论文信息 论文标题&#xff1a;MBRVO: A Blur Robust Visual Odometry Based on Motion Blurred Artifact Prior 作者&#xff1a;Jialu Zhang, Jituo Li*, Jiaqi Li, Yue Sun, Xinqi Liu, Zhi Zheng,…

饮水机复杂交互功能联网调试

饮水机复杂交互功能联网调试 引言 饮水机我们从最开始的放水和加热, 逐渐拓展到保温功能, 童锁功能, 红外检测功能, 对于这些复杂的交互功能, 我们如果通过按键进行调试, 会极大的增加我们的开发时间和成本, 如果我们频繁的进行烧录, 则如果涉及到一些中间变量, 则无法进行调试…

帆软BI怎么制作不等宽柱状图

帆软BI怎么制作不等宽柱状图 文章目录 帆软BI怎么制作不等宽柱状图不等宽柱状图起源一、怎么做不等宽柱状图准备二、操作步骤1.展示效果2.操作步骤-3.操作步骤 -图形属性4.操作步骤 -组件样式5.操作步骤 -横轴和纵轴6.完成7.不等宽柱状图与传统等宽柱状图对比 总结 不等宽柱状图…

【深度学习】嘿马深度学习笔记第5篇:神经网络与tf.keras,学习目标【附代码文档】

本教程的知识点为&#xff1a;深度学习介绍 1.1 深度学习与机器学习的区别 TensorFlow介绍 2.4 张量 2.4.1 张量(Tensor) 2.4.1.1 张量的类型 TensorFlow介绍 1.2 神经网络基础 1.2.1 Logistic回归 1.2.1.1 Logistic回归 TensorFlow介绍 总结 每日作业 神经网络与tf.keras 1.3 …

介绍云计算在医疗领域的应用实例

云计算在医疗领域的应用日益广泛&#xff0c;为医疗行业带来了诸多便利和创新。以下是几个典型的应用实例&#xff1a; 电子病历管理系统&#xff1a; 基于云计算技术的电子病历管理系统&#xff0c;通过互联网实现对病历数据的存储、管理、维护和查询等功能。这类系统能够自动…

关于助记词,词库的讨论

我有个想法&#xff0c;既然私钥碰撞的难度大。 -seed-&#xff08;pathmasterkey&#xff09;-privatekey-publickey-address 通过反推的难度大&#xff0c;那我可以尝试使用助记词碰撞 就例如&#xff0c;我生成1000个eth地址 1000个地址的助记词全部拿到&#xff0c;然后…

C++学习笔记——打印ASCII码

一、题目描述 二、代码 #include <iostream> using namespace std; int main() {char a_char;int a_int;cin >> a_char;a_int a_char;cout << a_int;return 0; }