朴素贝叶斯分类器基于iris及Python手写实现

数据来源为sklean.datasets中的load_iris,代码如下:

# -*- coding:utf-8 -*-
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 参考:https://blog.csdn.net/weixin_66845445/article/details/138135601
class bayes_iris():def __init__(self):passdef loadData(self):iris = load_iris()dataSet = iris.datatarget = iris.targetX_train,X_test,y_train,y_test = train_test_split(dataSet, target, test_size=0.3,random_state=37)labels = np.array(sorted(list(set(y_train))))return X_train,X_test,y_train,y_test,labels'''分类值有三个,分别计算每个属性在三个分类值下的条件概率'''def cal(self,test,col_index,labels,X,y):result = np.zeros((labels.shape[0],),dtype=np.float64)for index ,label in zip(range(len(labels)), labels):arr = np.array(list(zip(*X[y == label])))[col_index,:]mean = np.mean(arr)std = np.std(arr)result[index] = (1 / (np.sqrt(2 * np.pi)* std)) * np.exp(-1* (((test - mean)**2) / (2 * (std**2))))return resultdef pred(self,X_train,X_test,y_train,labels):countAll = y_train.shape[0]P0 = len(y_train[y_train == 0]) / countAllP1 = len(y_train[y_train == 1]) / countAllP2 = len(y_train[y_train == 2]) / countAllP = np.array([P0,P1,P2]).reshape(3,1)y_pred = np.zeros(X_test.shape[0], dtype=np.int8)for i in range(X_test.shape[0]):# result.shape = (3,4)result = np.zeros((labels.shape[0],X_test.shape[1]), dtype=np.float64)for j in range(X_test.shape[1]):result[:,j] = self.cal(X_test[i,j],j,labels=labels, X=X_train,y=y_train)result = np.concatenate((P,result), axis=1)y_pred[i] = labels[np.argmax(np.prod(result, axis=1))]return y_predif __name__ == '__main__':iris = bayes_iris()X_train,X_test,y_train,y_test,labels = iris.loadData()y_pred = iris.pred(X_train,X_test,y_train,labels)print(accuracy_score(y_test, y_pred=y_pred))

输出结果如下:

1.0

参考:https://blog.csdn.net/weixin_66845445/article/details/138135601

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

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

相关文章

《计算机原理与系统结构》学习系列——存储器(上)

系列文章目录 目录 存储器技术概要存储器层次cache,内存辅存存储器技术SRAM技术DRAM技术闪存磁盘存储器 局部性原理 高速缓存cache访存性能概念命中与缺失访存阻塞的周期数 cache基础:直接映射块号内存地址字段缺失缺失处理和写策略 全相联映射组相连映…

github高分项目 WGCLOUD - 运维实时管理工具

GitHub - tianshiyeben/wgcloud: Linux运维监控工具,支持系统硬件信息,内存,CPU,温度,磁盘空间及IO,硬盘smart,GPU,防火墙,网络流量速率等监控,服务接口监测&…

A021基于Spring Boot的自习室管理和预约系统设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…

【EasyExcel】EasyExcel导出表格包含合计行、自定义样式、自适应列宽

目录 0 EasyExcel简介1 Excel导出工具类设置自定义表头样式设置自适应列宽添加合计行 2 调用导出工具类导出Excel表3 测试结果 0 EasyExcel简介 在数据处理和报表生成的过程中,Excel是一个非常常用的工具。特别是在Java开发中,EasyExcel库因其简单高效而…

2024年11月09号Drawing Memory Models Review 2

So lets start with a piece of code that well be thinking about and take a few seconds to read it carefully and try to explain, in your own words, what this piece of code does.

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 (二)

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 (二) 一、前言 目前鸿蒙应用的实现逻辑,基本都是参考和移植Android端来实现。针对BLE低功耗蓝牙来说,在鸿蒙化的实现过程中。我们发现了,鸿蒙独有的优秀点&#xff0c…

2024年【流动式起重机司机】模拟考试及流动式起重机司机证考试

题库来源:安全生产模拟考试一点通公众号小程序 流动式起重机司机模拟考试考前必练!安全生产模拟考试一点通每个月更新流动式起重机司机证考试题目及答案!多做几遍,其实通过流动式起重机司机模拟考试题很简单。 1、【多选题】( )和…

混合搜索与多重嵌入:一次有趣又毛茸茸的猫咪搜索之旅!(二)

这是继上一篇文章 “混合搜索与多重嵌入:一次有趣又毛茸茸的猫咪搜索之旅!(一)” 的续篇。这这篇文章中,我们讲使用本地 Elasticsearch 部署来完成整个演示。这是一个简单的 Python Web 应用程序,展示了可…

算法【Java】—— 动态规划之路径问题

前言 本文章终点解析第一道题目【不同路径】和最后一道题目【地下城游戏】的动态规划思路,中间几道题目会很快过完,大家如果不熟悉动态规划的思路可以重点看一下这两道题目的解析。 不同路径 https://leetcode.cn/problems/unique-paths 解析&#xf…

FPGA实现串口升级及MultiBoot(五)通过约束脚本添加IPROG实例

本文目录索引 一个指令和三种方式通过约束脚本添加Golden位流工程MultiBoot位流工程验证example1总结代码缩略词索引: K7:Kintex 7V7:Vertex 7A7:Artix 7MB:MicroBlaze上一篇文章种总结了MultiBoot 关键技术,分为:一个指令、二种位流、三种方式、四样错误。针对以上四句话我…

jmeter基础02_下载安装jmeter

(安装包windows、mac、Linux通用) Step1. 官网下载 官网地址:https://jmeter.apache.org/download_jmeter.cgi 官网可见最新版本的jmeter和要求的jdk版本,先说结论:建议下载Binaries-zip格式包即可。 安装包有2大类&am…

理解鸿蒙app 开发中的 context

是什么 Context是应用中对象的上下文,其提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用文件路径)、area(文件分区…

Linux:git的了解和基础使用(保姆级教程)

文章目录 引言一、git是什么1.1 版本控制器git1.2 git的历史 二、git的使用2.1 安装git2.2 创建gitee账号2.3 git三板斧2.3.1 add2.3.2 commit2.3.3 push 三. git的补充总结 引言 git是一款软件,它用于帮助我们来管理代码以及文件,掌握并使用git可以很有…

探索LINQ在C#中的应用:从基本查询到数据联接

LINQ(语言集成查询)是微软为.NET框架开发的一种强大功能,于2007年作为C# 3.0和Visual Basic .NET 9.0的一部分引入。LINQ的诞生旨在提供一种一致且直观的方式来查询和操作数据,无论数据来源是内存中的集合、数据库还是XML文档。 …

鸿蒙UI开发——实现环形文字

1、背 景 有朋友提问:您好关于鸿蒙UI想咨询一个问题 如果我想实现展示环形文字是需要通过在Text组件中设置transition来实现么,还是需要通过其他方式来实现。 针对这位粉丝朋友的提问,我们做一下解答。 2、实现环形文字效果 ❓ 什么是环形…

搭建轻量级文件服务器Dufs

前言 Dufs是什么? 答:是一款轻量级文件管理服务器,类似于FTP服务器但又比FTP更好用易于管理。 Dufs有什么特性? 答: ‌静态文件服务…

【软考】系统分析师第二版 新增章节 第20章微服务系统分析与设计

微服务系统是一类基于微服务架构风格的分布式系统,它将应用程序拆分成多个独立的小型服务,每个服务都运行在独立的进程中,并采用轻量级通信协议进行通信。这些服务可以由不同的团队开发、不同的编程语言编写,并且可以按需部署。微…

基于SSM的校园美食交流系统【附源码】

基于SSM的校园美食交流系统 效果如下: 管理员主页面 用户主页面 美食信息页面 美食资讯页面 修改密码页面 论坛中心页面 研究背景 随着高校信息化建设的不断推进,校园生活日益丰富多样,学生对于美食的需求与探索也愈发旺盛。然而&#xff…

PICO+Unity MR空间网格

官方链接:空间网格 | PICO 开发者平台 注意:该功能只能打包成APK在PICO 4 Ultra上真机运行,无法通过串流或PICO developer center在PC上运行。使用之前要开启视频透视。 在 Inspector 窗口中的 PXR_Manager (Script) 面板上,勾选…

斗破QT编程入门系列之前言:认识Qt:获取与安装(四星斗师)

本系列是在学习完C之后,然后通过Qt构建界面来,赋予枯燥的代码新的样貌,这样我们才能开发出更人性化的程序,同时会进一步提高初学者对编程的兴趣,大家加油,斗破Qt来了。 斗破Qt目录: 斗破Qt编程…