机器学习实验四:贝叶斯分类器

系列文章目录

  1. 机器学习实验一:线性回归
  2. 机器学习实验二:决策树模型
  3. 机器学习实验三:支持向量机模型
  4. 机器学习实验四:贝叶斯分类器
  5. 机器学习实验五:集成学习
  6. 机器学习实验六:聚类

文章目录

  • 系列文章目录
  • 一、实验目的
  • 二、实验原理
  • 三、实验内容
    • 1. 朴素贝叶斯
    • 2. 半朴素贝叶斯
    • 3. 高斯分布的朴素贝叶斯计算方法
    • 4. 实验数据介绍
    • 5. 评价指标介绍
  • 四、实验步骤
    • 1. 划分数据集
    • 2. 训练朴素贝叶斯分类方法
    • 3. 评价分类器
    • 4. 使用分类器进行预测
  • 总结


一、实验目的

(1)了解朴素贝叶斯与半朴素贝叶斯的区别与联系,掌握高斯分布的朴素贝叶
斯计算方法;
(2)编程实现朴素贝叶斯分类器;
(3)使用朴素贝叶斯分类器实现多分类预测,度量模型性能。

二、实验原理

使用 Python 读取数据集信息并生成对应的朴素贝叶斯分类器,随后使用生
成的分类器实现多分类预测,并根据精确率、召回率和 F1值度量模型性能。

三、实验内容

1. 朴素贝叶斯

朴素贝叶斯(Naive Bayes)是基于贝叶斯定理与特征独立假设的分类方法。
使用朴素贝叶斯方法时,首先基于训练数据,基于特征条件独立假设学习输入与
输出的联合概率分布;随后对于给定的 X,利用贝叶斯定理求解后验概率最大的
输出标签。

2. 半朴素贝叶斯

半朴素贝叶斯是适当考虑一部分属性之间的相互依赖信息,其中“独依赖估
计”(One-Dependent Estimator,简称 ODE)是半朴素分类中最常用的一种策略。
所谓“独依赖估计”,也就是假设每个属性在分类类别之外最多仅依赖于一个其
他属性。
与基于特征的条件独立性假设开展的朴素贝叶斯方法相比,其最大的区别就
是半朴素贝叶斯算法放宽了条件独立假设的限制,考虑部分属性之间的相互依赖
信息。但两者有共同特点:假设训练样本所有属性变量的值都已被观测到,即训
练样本是完整的。

3. 高斯分布的朴素贝叶斯计算方法

使用条件:所有特征向量都是连续型特征变量且符合高斯分布。
概率分布密度:在这里插入图片描述

4. 实验数据介绍

实验数据为来自 UCI 的鸢尾花三分类数据集 Iris Plants Database。
数据集共包含 150 组数据,分为 3 类,每类 50 组数据。每组数据包括 4 个
参数和 1 个分类标签,4 个参数分别为:萼片长度 sepal length、萼片宽度 sepal
width、花瓣长度 petal length、花瓣宽度 petal width,单位均为厘米。分类
标签共有三种,分别为 Iris Setosa、Iris Versicolour 和 Iris Virginica。
数据集格式如下图所示:在这里插入图片描述
为方便后续使用,该数据集需要进行特征向量与标签分割以及标签编号。

5. 评价指标介绍

评价指标选择精确率 P、召回率 R、F1度量值 F1,计算公式如下:在这里插入图片描述
具体代码实现时,可以直接调用 sklearn 库中的相应方法进行计算。

四、实验步骤

1. 划分数据集

按照实验要求,本次数据集划分采用随机划分 80%数据用于训练,其余 20%
数据用于测试。使用 sklearn 库的 train_test_split()方法划分数据,代码如
下:

X_train, X_test, y_train, y_test = train_test_split(X, y, 
test_size=0.2)

2. 训练朴素贝叶斯分类方法

由于实验数据中四个特征变量均为连续型特征变量,我们如果需要使用高斯
分布朴素贝叶斯的话,只需要验证他是否符合高斯分布即可。这里使用 Q-Q 图来
验证数据是否符合高斯分布,如果数据符合高斯分布,则该 Q-Q 图趋近于落在
y=x 线上,绘制的代码如下:

from scipy.stats import probplot
probplot(data,dist='norm',plot=plt)
plt.title('sepal length')
plt.show()
#然后,使用 sklearn 库的 GaussianNB()方法训练分类器
clf = GaussianNB()
clf.fit(X_train, y_train)

3. 评价分类器

使用精确率、召回率、F1度量值对分类器作为评价指标,使用 sklearn 库中
的 accuracy_score()、precision_score()、recall_score()、f1_score()方法
进行计算,具体代码如下:

y_pred = clf.predict(X_test)
print(precision_score(y_test, y_pred, average=None))
print(recall_score(y_test, y_pred, average=None))
print(f1_score(y_test, y_pred, average=None))

4. 使用分类器进行预测

我们选取测试集的最后一条数据进行预测,观察分类器计算得到的概率、分
类结果与真实标签的内容。具体代码如下:

y_proba = clf.predict_proba(X_test[:1])
y_pred_num = clf.predict(X_test[:1])[0]
print("预测值:"+str(y_pred_num)+ " "+label[y_pred_num])
print("预计的概率值:", y_proba)
print("实际值:"+str(y_test[:1][0])+ " "+label[y_test[:1][0]])

总结

以上就是今天要讲的内容,机器学习实验四:贝叶斯分类器

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

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

相关文章

实用案例 | 用 Binning Explorer 小程序创建评分卡题

这个案例展示如何运用 MATLAB 中自带的 Binning Explorer 小程序来创建信用评级中的评分卡。 用 Binning Explorer 对样本进行分箱操作, 创建图表来展示分箱信息,并将创建的对象”creditscorecard”导出。 然后利用 creditscorecard 对象,结合 Financi…

基于深度学习路径规划RRT*-训练图像预处理

基于深度学习路径规划RRT*-训练图像预处理 图像预处理说明 在基于采样的RRT算法对机器人进行路径规划时,由于采样点的随机性,会增加路径的搜索时间的路径的非最优性,所以基于神经网络的优势,利用深度学习进行RRT的随机采样&…

使用webstrom编写vue开启提示

1.语言服务器选择 2.文件类型–忽略的文件和文件夹,删去,node_modules,就可以点进去库了 3.禁用JSLint、TSLint 4.开启node辅助 5.如果是vite,开启自动读取,或手动指定 6.如果是Webpack,开启自动读取&#…

Git提交代码时出现: ‘LF will be replaced by CRLF the next time Git touches it‘

遇到的问题 windows平台进行 git add 时,控制台打印警告 问题分析 1. Dos/Windows平台默认换行符:回车(CR)换行(LF),即’\r\n’ 2. Mac/Linux平台默认换行符:换行(LF&…

小调查:你申请的流量卡,快递员派件时让你激活并充话费了吗?

说到这个问题,就要给大家普及一下流量卡的激活方式了,并不是所有的流量卡快递都需要快递激活并充话费,只有在套餐详情种明确标注快递激活的流量卡才会有这个要求,自主激活的流量卡则不需要的。 如图所示: 接下来&#…

已通过考试和认证注册以及后续计划表

已通过考试和认证注册以及后续计划表 软考 - 计算机技术与软件专业技术资格(水平)考试信息系统集成及服务项目管理人员工程类考试计划你关注的证书样子 软考 - 计算机技术与软件专业技术资格(水平)考试 高级 信息系统项目管理师&…

鸿蒙开发组件之Image

Image组件加载图片方式有三种: 1、网络地址加载 直接Image(xxxx),添加上图片的网络地址就可以了。注意:真机、模拟题调试需要申请"ohos.permission.INTERNET"权限 Image(https://xxxxxxx) 2、PixelMap格式加载像素图 Image(PixelMapObjec…

整数在内存中的存储

整数和浮点数在内存中的存储方式是不一样的,今天,我们来具体学习一下 文章目录 整数在内存中的存储浮点数在内存中的存储 整数在内存中的存储 我们在之前就已经了解过了整数有原码,反码,补码的形式,这三种方式都是二进…

php使用vue.js实现省市区三级联动

参考gpt 有问题问gpt 实现效果 现省市区三级联动的方法可以使用PHP结合AJAX异步请求来实现。下面是一个简单的示例代码&#xff1a; HTML部分&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>省市区三级联动…

【vtkWidgetRepresentation】第七期 vtkImplicitPlaneRepresentation

很高兴在雪易的CSDN遇见你 前言 本文分享vtkImplicitPlaneRepresentation源码剖析&#xff0c;及相关的实例&#xff0c;该接口主要用于切割交互&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起…

亚马逊运营推荐数仓项目实战

亚马逊运营推荐数仓项目实战 项目技术栈 HadoopSpark (Python)Scala SparkSQLSparkStreaming MongoDB Redis Kafka Flume ( SpringMVC vue) 1 项目介绍 1.1 项目系统架构 项目以推荐系统建设领域知名的经过修改过的中文亚马逊电商数据集作为依托&#xff0c;以某电商…

《ReactJS实践入门》:引领JavaScript前端开发的革新之旅

在当今的软件开发世界中&#xff0c;ReactJS无疑是最为引人注目的JavaScript库之一。对于初学者来说&#xff0c;如何深入理解并掌握这一强大的前端工具&#xff0c;进而应用到实际开发中&#xff0c;一直是他们所面临的问题。而《ReactJS实践入门》一书&#xff0c;正是为了解…

单片机双机通信控制跑马灯

实验要求 两个单片机各驱动8个LED灯&#xff0c;构成两个跑马灯&#xff0c;要求甲单片机LED的点亮方式是从上至下&#xff0c;首先是最上面第一个点亮、其次是前两个点亮、其次是前三个点亮……直至8个灯全部点亮&#xff0c;8个灯全部灭&#xff0c;重复这个过程&#xff0c…

如何恢复已删除的 JPG/JPEG 文件的方法深度解析!

您是否意外丢失或删除了 JPG 或 JPEG 照片&#xff1f;幸运的是&#xff0c;您可以使用照片恢复工具将它们恢复。立即获取适用于 PC 的 JPEG 恢复工具 - 照片恢复&#xff1a; 照片是捕捉和重温生活中特殊时刻的最佳方式。因此&#xff0c;当我们由于硬盘崩溃、意外格式化磁盘…

linux Ubuntu下,第一个C++程序访问数据库,遇到的问题,及解决办法

在ubuntu下安装了mysql&#xff0c;mysql以后&#xff0c;编写了第一个访问数据库的程序&#xff1a; #include <iostream> #include <string> #include <cstdlib> //for system #include <mysql.h>using namespace std;int main() {mysqlpp::Connect…

[ROS2] --- param

1 param介绍 类似C编程中的全局变量&#xff0c;可以便于在多个程序中共享某些数据&#xff0c;参数是ROS机器人系统中的全局字典&#xff0c;可以运行多个节点中共享数据。 全局字典 在ROS系统中&#xff0c;参数是以全局字典的形态存在的&#xff0c;什么叫字典&#xff1f;…

keepalived+lvs 对nginx做负载均衡和高可用

LVS_Director KeepAlivedKeepAlived在该项目中的功能&#xff1a; 1. 管理IPVS的路由表&#xff08;包括对RealServer做健康检查&#xff09; 2. 实现调度器的HA http://www.keepalived.orgKeepalived所执行的外部脚本命令建议使用绝对路径实施步骤&#xff1a; 1. 主/备调度器…

深度解析IP应用场景API:提升风险控制与反欺诈能力

前言 在当今数字化时代&#xff0c;网络安全和用户数据保护成为企业日益关注的焦点。IP应用场景API作为一种强大的工具&#xff0c;不仅能够在线调用接口获取IP场景属性&#xff0c;而且具备识别IP真人度的能力&#xff0c;为企业提供了卓越的风险控制和反欺诈业务能力。本文将…

Java数据结构06——树

1.why: 数组&链表&树 2. 大纲 2.1前中后序 public class HeroNode {private int no;private String name;private HeroNode left;//默认为nullprivate HeroNode right;//默认为nullpublic HeroNode(int no, String name) {this.no no;this.name name;}public int …

Ubuntu编译文件安装SNMP服务

net-snmp源码下载 http://www.net-snmp.org/download.html 编译步骤 指定参数编译 ./configure --prefix/root/snmpd --with-default-snmp-version"2" --with-logfile"/var/log/snmpd.log" --with-persistent-directory"/var/net-snmp" --wi…