当前位置: 首页 > article >正文

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

贝叶斯简介

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

贝叶斯分类器

在这里插入图片描述

  • 参数:
    • 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.kler.cn/a/487554.html

相关文章:

  • 【计算机网络】什么是网关(Gateway)?
  • [Git] git cherry-pick
  • 丢帧常见的几种处理方法
  • 洛谷P1617————数字转英文
  • uniapp 导入uview-plus,使用组件出现,页面出现<up-parse>元素不存在,请检查你的代码
  • 随机置矩阵列为0[矩阵乘法pytorch版]
  • 洛谷 P3435 [POI2006] OKR-Periods of Words(扩展KMP+线段树做法)
  • Servlet与JSP:Java的秘密花园入口
  • 基于深度模型的印章检测(c++)
  • 【什么是MVCC?】
  • 智慧防洪平台:构建城市安全的数字防线
  • java中日期如何比大小
  • OSPF - 2、3类LSA(Network-LSA、NetWork-Sunmmary-LSA)
  • Mysql--基础篇--SQL(DDL,DML,窗口函数,CET,视图,存储过程,触发器等)
  • Mysql--基础篇--约束(主键,外键,唯一,检查,枚举及复合约束等)
  • FinGPT:通过传播意识和上下文增强的LLM提升基于情感的股票走势预测
  • 设计模式 行为型 观察者模式(Observer Pattern)与 常见技术框架应用 解析
  • 欧拉公式和傅里叶变换
  • SpringcloudAlibaba黑马笔记(部分)
  • WebSocket监听接口
  • 【读书笔记/源码】How Tomcat Works 笔记- c11~c13
  • 基于Django的个性化餐饮管理系统
  • 从2023年到2024年看人工智能的发展变化
  • 获取唯品会商品详情 item_get API 接口
  • 利用 Python 爬虫从义乌购根据关键词获取商品列表
  • 【多态】理解 Java 继承中成员变量与成员方法的访问特点