机器学习算法 —— 贝叶斯分类之模拟离散数据集

news2025/1/16 7:58:47

🌟欢迎来到 我的博客 —— 探索技术的无限可能!


🌟博客的简介(文章目录)

目录

  • 实战(贝叶斯分类)
    • 莺尾花数据
    • 模拟离散数据集
      • 库函数导入
      • 数据导入和分析
      • 模型训练和预测
  • 总结

实战(贝叶斯分类)

莺尾花数据

接上文:机器学习算法 —— 朴素贝叶斯

模拟离散数据集

库函数导入

import random
import numpy as np
import warnings
warnings.filterwarnings('ignore')
# 加载莺尾花数据集
from sklearn import datasets
# 使用基于类目特征的朴素贝叶斯
from sklearn.naive_bayes import CategoricalNB
from sklearn.model_selection import train_test_split

数据导入和分析

# 模拟数据
rng = np.random.RandomState(1)
# 随机生成600个100维的数据,每一维的特征都是[0, 4]之前的整数
X = rng.randint(5, size=(600, 100))
y = np.array([1, 2, 3, 4, 5, 6] * 100)
data = np.c_[X, y]
# X和y进行整体打散
random.shuffle(data)
X = data[:,:-1]
y = data[:, -1]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

所有的数据特征都是离散特征,我们引入基于离散特征的朴素贝叶斯分类器。

模型训练和预测

clf = CategoricalNB(alpha=1)
clf.fit(X_train, y_train)
acc = clf.score(X_test, y_test)
print("Test Acc : %.3f" % acc)

在这里插入图片描述
        随机数据测试,分析预测结果,贝叶斯会选择概率最大的预测结果,比如这里的预测结果是4,4对应的概率最大,由于我们是随机数据,每个人运行的时候,可能会出现不一样的结果。

x = rng.randint(5, size=(1, 100))
print(clf.predict_proba(x))
print(clf.predict(x))

在这里插入图片描述

总结

贝叶斯分类是一类基于统计学的分类算法,其核心思想是通过计算后验概率来预测样本所属类别

  1. 贝叶斯分类的基础理论

    • 理论基础:贝叶斯分类技术是一种非规则的分类方法,它通过对已分类的样本子集进行训练,学习归纳出分类函数[1]。
    • 特点:贝叶斯分类使用概率来表示所有形式的不确定性,并且能够使所有的属性都参与到分类中,其属性可以是离散的、连续的,也可以是混合的[1]。
    • 原理:基于统计学的贝叶斯分类方法以贝叶斯理论为基础,通过求解后验概率分布,预测样本属于某一类别的概率。朴素贝叶斯分类模型假定任意属性对类别的影响与其他属性对类别的影响无关,这种假设被称为类条件独立朴素假定[1]。
  2. 贝叶斯分类的关键概念

    • 先验概率与后验概率:贝叶斯分类中,先验概率是指在考虑实验结果之前,根据经验及先前知识所得到的概率。而后验概率则是在考虑了实验结果或附加信息之后得到的更新概率[5]。
    • 可能性函数:可能性函数是一个调整因子,使得预估概率更接近真实概率。在贝叶斯推断中,它用于调整先验概率得到后验概率[5]。
    • 条件独立性假设:这是朴素贝叶斯分类器的核心假设,即假设各特征之间相互独立,从而简化了后验概率的计算过程[1][5]。
  3. 朴素贝叶斯的应用实例

    • 文本分类:朴素贝叶斯分类算法在文本分类领域有着广泛的应用,如垃圾邮件过滤、情感分析等[3]。
    • 实际应用方式:朴素贝叶斯分类器可以事先计算好所有概率估值并存储起来,便于快速预测;或者采用懒惰学习方式,待收到预测请求时再进行概率估值;还可以实现增量学习,适应数据不断增加的情况[5]。
  4. 朴素贝叶斯的优缺点

    • 优点:算法简单易懂,学习效率高,尤其在数据量较大的情况下表现出较高的准确率[3]。
    • 缺点:朴素贝叶斯的条件独立性假设在现实中往往不成立,这可能会影响分类的准确性[3]。

此外,在深入了解贝叶斯分类的基础上,以下是一些具体的实践建议:

  • 在应用朴素贝叶斯算法时,应先检查数据集中的特征是否满足或近似满足独立性假设,以避免由于违反这一假设而引起的性能下降。
  • 对于连续属性的数据,需要特别注意概率密度函数的选择和参数估计,以确保模型的准确性。
  • 考虑到朴素贝叶斯可能由于独立性假设而导致精度受限,可以探索使用贝叶斯网络或其他更复杂的贝叶斯模型来提高分类准确性。

总的来说,贝叶斯分类以其独特的概率论基础,在机器学习领域占据了重要的位置。尽管朴素贝叶斯算法存在假设上的局限性,但其简洁性和在一些情况下出人意料的良好性能使其成为许多实际问题的首选方法。通过合理选择和应用不同的贝叶斯分类算法,可以在各种分类任务中达到既高效又准确的效果。

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

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

相关文章

C语言 | Leetcode C语言题解之第144题二叉树的前序遍历

题目: 题解: int* preorderTraversal(struct TreeNode* root, int* returnSize) {int* res malloc(sizeof(int) * 2000);*returnSize 0;if (root NULL) {return res;}struct TreeNode *p1 root, *p2 NULL;while (p1 ! NULL) {p2 p1->left;if (…

一道Delphi的For循环题目

起因 事情是这样的: 俺在一个Delphi交流QQ群,有点冷场,俺想热一下场子就发了下面这个段子。其实这是之前俺带新人时的一道题目。 第一个回答 第一个网友给的答案是 i:i-1; 俺说这个答案是不对的,因为 Delphi在编译时是不允许…

探索智慧机场运营中心解决方案的价值与应用

随着全球航空业的不断发展,机场运营中心的作用日益凸显。智慧机场运营中心解决方案以其高效的管理和智能化的运营模式,成为优化机场运营、提升服务水平的重要工具。本文将深入探讨智慧机场运营中心解决方案的价值与应用,揭示其在机场管理中的…

软件下载网站源码附手机版和图文教程

PHP游戏应用市场APP软件下载平台网站源码手机版 可自行打包APP,带下载统计,带多套模板,带图文教程,可以做软件库,也可以做推广app下载等等,需要的朋友可以下载 源码下载 软件下载网站源码附手机版和图文…

下拉框数据被遮挡 且 后续数据无法下拉的 解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法3.1 添加空白版2.2 调整z-index2.3 父容器的溢出属性2.4 调整样式属性4. 效果图前言 小程序使用的是Uniapp,原理都差不多,索性标题就不标注Uniapp(小程序) 对于该问题调试了一个晚上,最终解决,对此记录下来 1. 问题所示 执…

怎么取消Intellij IDEA中的项目和Git仓库的关联

这篇文章分享一种最简单的方法,取消已经开启代码控制的项目与git代码仓库的关联。 打开项目的位置,然后点击文件管理器上方的查看选项卡,勾选【隐藏的项目】。 删除.git文件夹 然后可以看到项目的文件夹下显示了一个隐藏的.git文件夹&#x…

MATLAB基础应用精讲-【数模应用】二元Logit分析

目录 算法原理 数学模型 极大似然法 Newton牛顿迭代法 logit回归分析步骤 一、二元logit分析 1.基本说明 2.数据处理 3.SPSSAU上传数据 4.分析前提示 5.SPSSAU分析 6.其它说明 二、多分类logit分析 1.基本说明 2.数据要求与处理 3.SPSSAU上传数据 4.SPSSAU分析…

微信小程序双层/多层 wx:for 循环嵌套,关于内外层的 index 和 item ;data-index 传递两个参数

微信小程序用 wx:for 循环可以快速将后端 js 的数组快速显示到前端&#xff1b; 那假如数组中嵌套数组&#xff1b;就存在内外层两层及以上的多层嵌套循环了。 那么如果两层的嵌套式循环 index 究竟是属于哪一层呢&#xff1f;item 又属于哪一个呢&#xff1f; <view><…

【优选算法】详解target类求和问题(附总结)

目录 1.两数求和 题目&#xff1a; 算法思路&#xff1a; 代码&#xff1a; 2.&#xff01;&#xff01;&#xff01;三数之和 题目 算法思路&#xff1a; 代码&#xff1a; 3.四数字和 题目&#xff1a; 算法思路&#xff1a; 代码&#xff1a; 总结&易错点&…

Java实现物候相机和植被分析导出相对指数成果图

一、基础概念 植被分析是利用地理信息系统&#xff08;GIS&#xff09;、遥感技术、生态学、环境科学等多学科交叉手段&#xff0c;对植被的分布、类型、结构、组成、动态变化、生产力、生态功能进行量化评估的过程。植被分析对于生态保护、生物多样性研究、资源管理、环境监测…

交易中的群体行为特征和决策模型

本文基于人的行为和心理特征&#xff0c;归纳出交易中群体的行为决策模型&#xff0c;并基于这个模型&#xff0c;分析股价波浪运行背后的逻辑&#xff0c;以及投机情绪的周期变化规律&#xff0c;以此指导交易&#xff0c;分析潜在的风险和机会&#xff0c;寻找并等待高性价比…

stm32MP135裸机编程:修改官方GPIO例程在DDR中点亮第一颗LED灯

0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf 正点原子stm32mp135开发板&原理图 STM32Cube_FW_MP13_V1.1.0 STM32CubeIDE v1.151 需要修改那些地方 1.1 修改LED引脚 本例使用开发板的PI3引脚链接的LED作为我们点亮的第一颗LED灯&#xff0c;…

教育的数字化转型——Kompas.ai如何变革学习体验

引言 在现代教育中&#xff0c;数字化转型逐渐成为提升学习效果的重要手段。随着科技的进步&#xff0c;人工智能&#xff08;AI&#xff09;在教育领域的应用越来越广泛。本文将探讨教育数字化转型的发展趋势&#xff0c;并介绍Kompas.ai如何通过AI技术变革学习体验。 教育数…

金融量化分析开源工具:TuShare

TuShare&#xff1a;一站式金融数据解决方案&#xff0c;让量化分析触手可及- 精选真开源&#xff0c;释放新价值。 概览 TuShare&#xff0c;是Github社区上一个专为金融量化分析师和数据爱好者设计的开源工具&#xff0c;提供了从数据采集、清洗加工到数据存储的全流程服务。…

element-plus的el-space标签的使用

el-space标签可以很方便的设置标签间距和分隔符&#xff0c;对齐方式&#xff0c;是否拆行等属性。 <script setup lang"ts"> import { onMounted, ref } from vue;const sizeref(30)</script><template><el-space wrap :size"size"…

Redis实战宝典:基础知识、实战技巧、应用场景及最佳实践全攻略

背景 在Java系统实现过程中&#xff0c;我们不可避免地会借助大量开源功能组件。然而&#xff0c;这些组件往往功能丰富且体系庞大&#xff0c;官方文档常常详尽至数百页。而在实际项目中&#xff0c;我们可能仅需使用其中的一小部分功能&#xff0c;这就造成了一个挑战&#…

c语言编程

1. 2。 int main(int argc, const char *argv[]) { int year,month,day; int result0; printf("请输入&#xff1a;"); scanf("%d/%d/%d",&year,&month,&day); if(month>12||month<1) { printf("error \n"); return 0; } s…

解决Vue项目Network: unavailable的问题

在vscode使用 npm run serve 运行 Vue项目时发现一个问题&#xff0c;项目只能通过Local访问而不能通过Network访问&#xff0c;终端显示如下&#xff1a; 碰到这种情况的解决方法&#xff1a;在环境变量的path中添加“C:\Windows\System32\Wbem” 1.找到“环境变量”&#xf…

算法题目学习汇总

1、二叉树前中后序遍历:https://blog.csdn.net/cm15835106905/article/details/124699173 2、输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点&#xff0c;只能调整树中结点指针的指向。 public class Solution {private Tr…

Leetcode881. 救生艇

Every day a Leetcode 题目来源&#xff1a;881. 救生艇 解法1&#xff1a;贪心 排序 双指针 排序后&#xff0c;使用双指针分别指向数组首尾&#xff0c;每次取两个指针指向的元素之和与 limit 比较&#xff0c;如果小于等于 limit&#xff0c;则两个指针同时向中间移动一…