实验目的

理解和掌握朴素贝叶斯基本原理和方法,理解极大似然估计方法,理解先验概率分布和后验概率分布等概念,掌握朴素贝叶斯分类器训练方法。

实验要求

给定数据集,编程实现朴素贝叶斯分类算法,计算相应先验概率,条件概率,高斯分布均值和方差的估计值,并给出模型在测试集上的精度。

实验环境

python, numpy, scipy

实验代码

import numpy as npfrom scipy.stats import norm# 导入训练数据train_dataset_data = np.genfromtxt("experiment_07_training_set.csv", delimiter=",", skip_header=1, usecols=(1, 2, 3, 4))rowOfTrainDataset = train_dataset_data.shape[0]train_dataset_label = np.genfromtxt("experiment_07_training_set.csv", delimiter=",", skip_header=1, usecols=(5,), dtype="str")# 导入测试数据test_dataset_data = np.genfromtxt("experiment_07_testing_set.csv", delimiter=",", skip_header=1, usecols=(1, 2, 3, 4))rowOfTestDataset = test_dataset_data.shape[0]test_dataset_label = np.genfromtxt("experiment_07_testing_set.csv", delimiter=",", skip_header=1, usecols=(5,), dtype="str")# 定义种类列表和属性列表species = ["Iris-setosa", "Iris-versicolor", "Iris-virginica"]xs = ["SepalLength", "SepalWidth", "PetalLength", "PetalWidth"]# 统计先验概率prior = np.zeros(3)for i in range(3):prior[i] = np.sum(train_dataset_label == species[i], axis=0) / rowOfTrainDatasetprint("先验概率: ")for i in range(3):print(f"{species[i]}-> {prior[i]}")# 计算条件概率condition = np.zeros((3, 4, 2))# 对3个类别计算for i in range(3):# 每个类别4个属性for j in range(4):temp = train_dataset_data[train_dataset_label == species[i], j]# 存储均值condition[i, j, 0] = np.mean(temp)# 存储标准差condition[i, j, 1] = np.sqrt(np.var(temp))print(f"高斯分布参数估计:")for i in range(3):print(f"P(X|Y={species[i]})->", end='')for j in range(4):print(f"|X1={xs[j]}:均值->{condition[i, j, 0]:.4f} 标准差->{condition[i, j, 1]: .4f}|", end=' ')print("")# 计算精度pred = np.zeros_like(test_dataset_label)for i in range(rowOfTestDataset):# 将概率初始化为0probability1 = 0# 计算3种类别的概率取最大概率作为种类for j in range(3):p0 = norm.pdf(test_dataset_data[i, 0], loc=condition[j, 0, 0], scale=condition[j, 0, 1])p1 = norm.pdf(test_dataset_data[i, 1], loc=condition[j, 1, 0], scale=condition[j, 1, 1])p2 = norm.pdf(test_dataset_data[i, 2], loc=condition[j, 2, 0], scale=condition[j, 2, 1])p3 = norm.pdf(test_dataset_data[i, 3], loc=condition[j, 3, 0], scale=condition[j, 3, 1])probability2 = prior[j] * p0 * p1 * p2 * p3if probability2 > probability1:pred[i] = jprobability1 = probability2# 将类别从编号转为字符串pred_species = np.array([species[int(p)] for p in pred])# 计算精度accuracy = np.sum(pred_species == test_dataset_label) / rowOfTestDatasetprint(f"模型精度: {accuracy * 100: .2f}%")

结果分析

先验概率

类别

先验概率

P(Y=setosa)

0.4

P(Y=versicolor)

0.4

P(Y=virginica)

0.2

高斯分布参数估计精度:

类别

X1=SepalLength

X2=SepalWidth

X3=PetalLength

X4=PetalWidth

均值

标准差

均值

标准差

均值

标准差

均值

标准差

P(X|Y=setosa)

5.0375

0.3576

3.4400

0.3597

1.4625

0.1698

0.2325

0.0985

P(X|Y=versicolor)

6.0150

0.5126

2.7875

0.3257

4.3200

0.4440

1.3500

0.2049

P(X|Y=virginica)

6.5600

0.7130

2.9200

0.3763

5.6550

0.6241

2.0450

0.2673

模型精度:

92.00%

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

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

相关文章

java生成pdf文件

1.依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>8.0.4</version><type>pom</type></dependency> 2.代码 package org.example;import com.itextpdf.io.image…

macOS挂载iOS应用沙盒文件夹

背景 工具 libimobiledevice: linux&#xff0c;macOS等与ios设备通信是的工具 macFUSE 是 macOS 文件系统扩展的“引擎”&#xff0c;支持开发者创建各类虚拟文件系统。 iFUSE 是专为 iOS 设备设计的“连接器”&#xff0c;需依赖 macFUSE 实现功能。 若需访问 iPhone/iP…

嵌入式软件面经(四)Q:请说明在 ILP32、LP64 与 LLP64 三种数据模型下,常见基本类型及指针的 sizeof 值差异,并简要解释其原因

从事嵌入式开发深入理解 ILP32、LP64、LLP64 三种主流数据模型及其在平台上的实际表现&#xff0c;可以帮助我们避免诸如类型越界、结构错位、指针截断等致命错误。 一、何为数据模型&#xff1f;为何重要&#xff1f; 数据模型&#xff08;Data Model&#xff09;是指在某一编…

计算机组成原理与体系结构-实验二 ALU(Proteus 8.15)

目录 一、实验目的 二、实验内容 三、实验器件 四、实验原理 五、实验步骤 六、思考题 一、实验目的 1、了解算术逻辑运算器&#xff08;74LS181&#xff09;的组成和功能。 2、掌握基本算术和逻辑运算的实现方法。 二、实验内容 设计算数逻辑运算器系统的通路&#x…

ubuntu下免sudo执行docker

前言 在ubuntu中&#xff0c;默认是无法使用root账号的&#xff0c;安装完docker后&#xff0c;不可避免的要使用sudo来执行docker命令&#xff0c;这就让运维变得很麻烦 避免sudo # 添加当前用户到 docker 组 sudo usermod -aG docker $USER# 刷新组权限 newgrp docker# 验…

微处理原理与应用篇---STM32寄存器控制GPIO

在 ARM 架构下使用 C 语言控制 32 位寄存器实现 GPIO 操作&#xff0c;需结合芯片手册进行寄存器映射和位操作。以下以 STM32F103&#xff08;Cortex-M3 内核&#xff09;为例&#xff0c;详细介绍实现方法&#xff1a; 一、STM32F103 GPIO 控制&#xff08;标准外设库&#x…

基于OPUS-MT模型的中译英程序实现

这是我的kaggle账号名“fuliuqin” 代码参考如下&#xff1a; nlp.paperflq | KaggleExplore and run machine learning code with Kaggle Notebooks | Using data from [Private Datasource]https://www.kaggle.com/code/fuliuqin/nlp-paperflq 目录 绪论 研究背景与意义 研究…

炸鸡派-定时器基础例程

定时器简介 基本定时器&#xff0c;计数中断、产生DMA请求。 通用定时器&#xff0c;PWM输出、输入捕获、脉冲计数。 高级定时器&#xff0c;输出比较、互补输出带死区控制、PWM输入。 中心对齐的计数模式可以生成对称的PWM波形信号。计数可以先增后减。 这种模式下&#xff…

利用不坑盒子的Copilot,快速排值班表

马上放暑假了&#xff0c;有多少人拼命排值班表的&#xff1f; 今天用我亲身制作值班表的一些Excel操作&#xff0c;给大家分享一些在Excel中的小技巧&#xff0c;需要的及时收藏&#xff0c;有一天用得上~ 值班表全貌 先给大家看看我制作的值班表的样子&#xff0c;应该大家…

Linux 面试知识(附常见命令)

目录结构与重要文件 Linux 中一切皆文件&#xff0c;掌握目录结构有助于理解系统管理与配置。 目录说明/根目录&#xff0c;所有文件起点/bin基本命令的可执行文件&#xff0c;如 ls, cp/sbin系统管理员用的命令&#xff0c;如 shutdown/etc配置文件目录&#xff0c;如 /etc/…

Lua 安装使用教程

一、Lua 简介 Lua 是一门轻量级、高性能的脚本语言&#xff0c;具有简洁语法、嵌入性强、可扩展性高等特点。广泛应用于游戏开发&#xff08;如 Roblox、World of Warcraft&#xff09;、嵌入式开发、配置脚本、Nginx 扩展&#xff08;OpenResty&#xff09;等领域。 二、Lua …

SPAD像素概念理解

SPAD(Single Photon Avalanche Diode,单光子雪崩二极管)像素是一种能够检测单个光子的超灵敏光电探测器,其核心原理是通过雪崩倍增效应将单个光子产生的微弱电流信号放大到可观测水平。 一、工作原理 雪崩倍增效应 当SPAD反向偏压超过其击穿电压时,进入盖革模式(Geiger M…

SSSSS

#include <iostream> void LineOf(bool** n1, bool** n2, int column, int raw, int* result) { for (int i 0; i < column; i) { int d -1, n -1; // 反向遍历&#xff0c;找最后一个 true for (int j raw - 1; j > 0; j--) { …

【AI智能体】社交娱乐-智能助教

智能助教是扣子官方提供的教育类智能体模板。助教模板分为学习陪伴和作业批改两种场景&#xff0c;分别适用于学生角色和教师角色&#xff0c;你可以根据需求选择对应的模板&#xff0c;并将其改造为其他学科或其他教育阶段的智能助教。 模板介绍 在智能学伴/助教的落地过程中…

自动化保护 AWS ECS Fargate 服务:使用 Prisma Cloud 实现容器安全

引言 在云原生时代,容器化技术已成为现代应用部署的标准方式。AWS ECS Fargate 作为一种无服务器容器服务,让开发者能够轻松运行容器化应用而无需管理底层基础设施。然而,随着容器技术的普及,安全问题也日益突出。本文将介绍如何通过 Python 脚本自动化地为 ECS Fargate 服…

Kafka Controller 元数据解析与故障恢复实战指南

#作者&#xff1a;张桐瑞 文章目录 1 生产案例&#xff1a;Controller 选举在故障恢复中的关键作用1.1 问题背景1.2 核心操作原理&#xff1a; 2 Controller 元数据全景&#xff1a;从 ZooKeeper 到内存的数据镜像2.1元数据核心载体&#xff1a;ControllerContext 类2.2核心元…

《寻北技术的全面剖析与应用前景研究报告》

一、引言 1.1 研究背景与意义 寻北&#xff0c;作为确定地理北极方向的关键技术&#xff0c;在众多领域中扮演着举足轻重的角色。在军事领域&#xff0c;精确的寻北对于武器系统的瞄准、导弹的精确制导以及部队的战略部署都至关重要。例如&#xff0c;火炮在发射前需要精确寻…

深入比较 Gin 与 Beego:Go Web 框架的两大选择

引言 在 Go 语言生态系统中&#xff0c;Gin 和 Beego 是两个非常受欢迎的 Web 框架。它们各自有着不同的设计理念和目标用户群体。本文将对这两个框架进行深入比较&#xff0c;并帮助你理解它们之间的区别&#xff0c;以便根据项目需求做出合适的选择。 一、Gin 概述 Gin是一…

全新大模型开源,腾讯(int4能打DeepSeek) Vs 谷歌(2GB运行多模态)

大家好&#xff0c;我是 Ai 学习的老章 最近除了阿里 Qwen3 模型更新了图片生成和处理能力&#xff0c;大家都可以玩转吉卜力风格 还有几个最近发布的大模型值得关注 1 是腾讯开源了 80B 混元 A13B 模型&#xff0c;亮点是精度无损的 int4 很能打 2 是谷歌开源的小参数 Gemm…

向量数据库milvus中文全文检索取不到数据的处理办法

​检查中文分词配置​ Milvus 2.5 支持原生中文全文检索&#xff0c;但需显式配置中文分词器&#xff1a; 创建集合时指定分词器类型为 chinese python schema.add_field(field_name"text", datatypeDataType.VARCHAR, max_length65535, enable_analyzerTrue, an…