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

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


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

目录

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

实战(贝叶斯分类)

莺尾花数据

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

模拟离散数据集

库函数导入

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.mzph.cn/pingmian/26095.shtml

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

相关文章

群体优化算法---水波优化算法介绍以及应用于聚类数据挖掘代码示例

介绍 水波优化算法(Water Wave Optimization, WWO)是一种新兴的群智能优化算法,灵感来自水波在自然环境中的传播和衰减现象。该算法模拟了水波在水面上传播和碰撞的行为,通过这些行为来寻找问题的最优解。WWO算法由三种主要的操作…

打工人的福利,NewspaceGpt使用新体验

使用地址:https://newspace.ai0.cn/ NewspaceGpt大体所有功能一览(​​newspace.ai0.cn​​) 使用体验与官网完全一致,可在第一时间体验到官网所有新功能。无需特殊上网。内置多个Plus账号,不用担心次数不够。支持所有GPTS功能:DALLE-3模型(…

CTFHUB-SQL注入-时间盲注

本题用到sqlmap工具,没有sqlmap工具点击🚀🚀🚀直达下载安装使用教程 理论简述 时间盲注概述 时间盲注是一种SQL注入技术的变种,它依赖于页面响应时间的不同来确定SQL注入攻击的成功与否。在某些情况下,攻…

攻防世界---misc---embarrass

1、下载附件是一个数据包 2、用wireshark分析 3、ctrlf查找字符 4、 flag{Good_b0y_W3ll_Done}

angular2网页前端执行流程

示例代码版本: http://192.168.102.9/jas-paas/cloudlink-front-framework/tree/045f4811da782c107eca72f9bdea39ebaa086a7d 命令行运行命令启动服务 在开发环境下,打开项目目录,运行命令npm start,这个命令会进入package.json文件中&#x…

cve_2014_3120-Elasticsearch-rce-vulfocus靶场

1.背景 来源:ElasticSearch(CVE-2014-3120)命令执行漏洞复现_mvel 漏洞-CSDN博客 参考:https://www.cnblogs.com/huangxiaosan/p/14398307.html 老版本ElasticSearch支持传入动态脚本(MVEL)来执行一些复…

Windows11上安装docker(WSL2后端)和使用docker安装MySQL和达梦数据库

Windows11上安装docker(WSL2后端)和使用docker安装MySQL和达梦数据库 1. 操作系统环境2. 首先安装wsl2.1 关于wsl2.2 安装wsl2.3 查看可用的wsl2.4 安装ubuntu-22.042.5 查看、启动ubuntu-22.04应用2.6 上面安装开了daili2.7 wsl的更多参考 3. 下载Docke…

Springboot 开发之任务调度框架(一)Quartz 简介

一、引言 常见的定时任务框架有 Quartz、elastic-job、xxl-job等等,本文主要介绍 Spirng Boot 集成 Quartz 定时任务框架。 二、Quartz 简介 Quartz 是一个功能强大且灵活的开源作业调度库,广泛用于 Java 应用中。它允许开发者创建复杂的调度任务&…

【Jenkins+K8s】持续集成与交付 (二十):K8s集群通过Deployment方式部署安装Jenkins

🟣【Jenkins+K8s】持续集成与交付 (二十):K8s集群通过Deployment方式部署安装Jenkins 一、 准备工作二、安装 Jenkins2.1 设置NFS共享目录2.2 创建名称空间2.3 创建持久化卷和声明2.4 创建sa账号2.5 对sa账号授权2.6 通过Deployment方式部署Jenkins2.7 查看Jenkins是否创建…

AdroitFisherman模块测试日志(2024/6/10)

测试内容 测试AdroitFisherman分发包中SHAUtil模块。 测试用具 Django5.0.3框架,AdroitFisherman0.0.31 项目结构 路由设置 总路由 from django.contrib import admin from django.urls import path,include from Base64Util import urls urlpatterns [path(ad…

SCRM的全面了解

一、什么是SCRM SCRM(Social CRM,社会化客户关系管理),是以用户为中心,通过社交平台与用户建立联系,以内容、活动、客服、商城等服务吸引用户注意力,并不断与用户产生互动,实现用户…

【Oracle篇】rman时间点异机恢复:从RAC环境到单机测试环境的转移(第六篇,总共八篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

谷歌AI助力软件工程的进展及未来展望

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

OpenAI 宕机事件:GPT 停摆的影响与应对

引言 2024年6月4日,OpenAI 的 GPT 模型发生了一次全球性的宕机,持续时间长达8小时。此次宕机不仅影响了OpenAI自家的服务,还导致大量用户涌向竞争对手平台,如Claude和Gemini,结果也导致这些平台出现故障。这次事件的广…

lua网站开发中如何制作自定义模块

自定义模块是FastWeb框架的重要拓展功能,用来扩展和增强服务的能力。通过自定义模块,开发者可以轻松添加特定的功能和特性,使得网站开发更加灵活和高效。本文将演示如何添加自己的模块作为FastWeb的拓展,为框架的壮大与支持提供重…

在 Word 中,如何有效调整文字与下划线之间的距离

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 如果你在使用 Word 时,希望调整文字和下划线之间的距离,让它们看起来更加美观,可以按照以下步骤操作: 1. 在你想要加下划线的文字前后各加一个空格&…

c++【入门】米老鼠偷糖果

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 米老鼠发现了厨房放了n颗糖果,它一次可以背走a颗,请问米老鼠背了x次之后还剩多少颗?(假设x次之后一定有糖果剩下) 输入 三个整数n、a、x分别代表总共有n颗糖果&…

在windows10 安装子系统linux(WSL安装方式)

在 windows 10 平台采用了WSL安装方式安装linux子系统 1 查找自己想要安装的linux子系统 wsl --list --online 2 在线安装 个人用Debian比较多,这里选择Debian,如下图: wsl --install -d Debian 安装过程中有一步要求输入用户名与密码&…

使用Vue CLI在其他磁盘创建项目出现错误及解决

Vue CLI是Vue.js官方推出的脚手架工具,可以帮我们快速的创建Vue项目框架。 我们创建Vue项目时一般默认都是在C盘,但由于某些因素我们需要在其他磁盘上创建Vue项目。 通过“winr”打开终端时默认位置都是C盘,但是Vue CLI不接受绝对路径作为参…

802.11漫游流程简单解析与笔记_Part3

原定计划在Part3分析ns3的Roaming流程抓包,但ns3并不支持漫游: 看过Part1的应该都知道,标准关联流程是auth*2 associate*2 key*4,但ns3里面没有与auth有关的部分,third脚本里面有cap字段,但无auth也无key&a…