《机器学习》——贝叶斯算法

ops/2025/1/16 4:20:31/

贝叶斯简介

  • 贝叶斯公式,又称贝叶斯定理、贝叶斯法则,最初是用来描述两个事件的条件概率间的关系的公式,后来被人们发现具有很深刻的实际意义和应用价值。该公式的实际内涵是,支持某项属性的事件发生得愈多,则该属性成立的可能性就愈大。
  • 利用贝叶斯公式可以定量地描述由果推因的可靠程度,在经济、医药、人工智能等领域中广泛应用。
  • 贝叶斯公式可以拓展为随机变量形式,在贝叶斯统计的观点下,如果已知样本的观察值,便可以使用参数的后验分布来进行参数估计。
    在这里插入图片描述

贝叶斯分类器

在这里插入图片描述

  • 参数:
    • alpha:
      • 类型:浮点数,默认为 1.0
      • 在这里插入图片描述
    • fit_prior:
      • 类型:布尔值,默认为 True。
      • 在这里插入图片描述
    • binarize(二值化):
      • 浮点数或 None,默认值=0.0
      • 样本特征二值化(映射到布尔值)的阈值。如果为 None,则假定输入已由二进制向量组成。
    • class_prior:
      • 数组,形状为 (n_classes,),默认值为 None
      • 类别的先验概率。如果指定,则先验不会根据数据进行调整。

贝叶斯实例

我们通过贝叶斯的算法实例,通过算法来实现项目。
本项目目标是对数据进行分类,共一百条数据,且第一列为数据编号不参与项目,最后一列为数据的分类标签有0和1类别。
在这里插入图片描述

项目过程

  • 导入数据
  • 处理数据
  • 划分数据
  • 通过贝叶斯分类器训练模型
  • 自测并用测试集测试
  • 产生分类报告和绘制混淆矩阵

导入数据

数据:通过网盘分享的文件:iris.csv
链接: https://pan.baidu.com/s/1ssc_VSVSUbkzz2-SOipV9w 提取码: jq54

# 导入数据
data = pd.read_csv('iris.csv',header=None)

处理数据

# 删除第一列
data = data.drop(0,axis=1)
x_whole = data.drop(5,axis=1) # 删除第5列其余为原始特征数据
y_whole = data[5] # 第5列为原始标签

划分数据

# 划分训练集和测试集,从原始数据中划分20%为测试集,80%为训练集。
from sklearn.model_selection import train_test_split
x_train_w,x_test_w,y_train_w,y_test_w=\train_test_split(x_whole,y_whole,test_size=0.2,random_state=0)

通过贝叶斯分类器训练模型

# 导入贝叶斯分类器
from sklearn.naive_bayes import MultinomialNB
classifier = MultinomialNB()
# 训练模型
classifier.fit(x_train_w,y_train_w)

自测并用测试集测试

# 使用训练集自测
from sklearn import metrics
train_pred = classifier.predict(x_train_w)
# 使用测试集进行测试
test_pred = classifier.predict(x_test_w)

产生分类报告和绘制混淆矩阵

# 分别对训练集和测试集的结果产生分类报告和混淆矩阵
print(metrics.classification_report(y_train_w,train_pred))
cm_plot(y_train_w,train_pred).show()
print(metrics.classification_report(y_test_w,test_pred))
cm_plot(y_test_w,test_pred).show()

在这里插入图片描述
在这里插入图片描述

可以通过分类报告和混淆矩阵可以看出,没有产生过拟合和欠拟合等,准确率和召回率都很高。


http://www.ppmy.cn/ops/148983.html

相关文章

C++编程进阶:标准库中的迭代器库解析

1. 迭代器库介绍 本文主要聚焦于C++的迭代器库,涵盖了迭代器的概念、分类、相关类型、原语操作、定制点、算法概念与实用工具、适配器、流迭代器、操作以及范围访问等内容,为C++编程中迭代器的使用提供了全面的参考。迭代器是一种抽象概念,它允许以统一的方式处理不同的数据…

社交新零售下开源 AI 智能名片 2+1 链动模式 S2B2C 商城小程序的创新实践与发展剖析

摘要:在社交电商蓬勃发展并向社交新零售转型的浪潮中,多种创新模式与技术应用不断涌现。本文聚焦于开源 AI 智能名片 21 链动模式 S2B2C 商城小程序,深入探讨其在社交新零售格局下的内涵、优势、应用策略以及对行业发展的深远影响&#xff0c…

XML通过HTTP POST 请求发送到指定的 API 地址,进行数据回传

代码结构说明 这段代码的主要功能是: 从指定文件夹中读取所有 XML 文件。 将每个 XML 文件的内容通过 HTTP POST 请求发送到指定的 API 地址。 处理服务器的响应,并记录每个文件的处理结果。 using System; using System.IO; using System.Net; usin…

GitHub - riscv-software-src/riscv-isa-sim: Spike, a RISC-V ISA Simulator

GitHub - riscv-software-src/riscv-isa-sim: Spike, a RISC-V ISA Simulator 操作手册 $ apt-get install device-tree-compiler libboost-regex-dev libboost-system-dev $ mkdir build $ cd build $ ../configure --prefix$RISCV $ make $ [sudo] make install 具体安装 …

02.MPLS动态LSP配置实验

MPLS动态LSP配置实验 MPLS动态LSP配置实验基本配置MPLS部分查看LDP会话基本信息查看详细信息查看MPLS动态LSP配置实验 基本配置 接口地址和OSPF配置,省略!全网互通! 注意:8.8.8.8和9.9.9.9也要宣告! MPLS部分 [ar1]mpls lsr-id 1.1.1.1 [ar1]mpls Info: Mpls starting,…

【数据结构】线性表

线性表 线性表顺序表存储结构初始化在尾部添加元素遍历顺序表插入元素时间复杂度 删除元素查找元素动态分配内存地址初始化清空顺序表线性表的顺序存储形式(顺序表)有哪些很麻烦的地方? 链表链表存储结构单链表 线性表 由n(n>0…

异构计算:边缘计算的未来引擎

随着物联网、5G和人工智能技术的快速发展,边缘计算正成为数字化转型的关键支撑。然而,边缘场景对计算平台提出了更高的要求:高性能、低功耗、实时性 和 灵活性 缺一不可。在这样的背景下,异构计算 逐渐成为边缘计算的核心技术方向…

反向代理模块。

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当于…