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

devtools/2024/12/21 22:21:33/

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


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

目录

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

实战(贝叶斯分类

莺尾花数据

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

模拟离散数据集

库函数导入

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.ppmy.cn/devtools/47067.html

相关文章

uniapp原生插件开发实战——集成Android端的Twitter登陆

Android集成Twitter登陆的官方教程:https://github.com/twitter-archive/twitter-kit-android/wiki 项目创建 首先可以先看下uniapp原生插件开发教程 uniapp原生插件类型分为两种: Module模式:能力扩展,无嵌入窗体的UI控件,类似于功能插件。Component模式:在窗体中内嵌…

C++ 数据共享与保护学习记录【代码】

一.项目一 1.头文件.h //A.h #pragma once //防止头文件被重复包含(重复包含会被重复编译,也就是该类会被重复定义) #ifndef HEAD_H //等价于( #if !defined(HEAD_H) ) //defined是一个预处理操作符,相当于一个表达式…

区块链技术:供应链金融的革新者与引领者

一、引言 在供应链金融领域,区块链技术以其独特的去中心化、不可篡改、透明公开等特性,正在逐步成为该领域的革新者与引领者。本文将深入探讨区块链技术在供应链金融中的应用特点、功能、使用场景,并结合具体案例和技术方案,展现其巨大的潜力和价值。 二、区块链在供应链金…

Spring Boot既打jar包又打war包如何做

你好,我是柳岸花开。 引言 在软件开发中,根据不同的部署需求,我们可能需要将应用打包成不同的格式。Spring Boot作为目前流行的Java应用开发框架,提供了一种简单的方式来打包应用。本文将介绍如何利用Maven Profiles在Spring Boot…

高等教育的AI革新:OpenAI面向大学推出ChatGPT Edu

OpenAI推出了ChatGPT Edu,这是一个为大学设计的专用版本,旨在让学生、教职员工、研究人员和校园运营能够负责任地使用AI。 ChatGPT Edu 将AI技术引入了教育领域,其建立在GPT-4o的基础上,它不仅能够处理文本和图像,还…

【全开源】旅游门票预订系统(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp开发的旅游门票预订系统,支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统,提供前后台无加密源码,支持私有化部署。 ​便捷你的每一次出行🌍 🌟 轻松预订…

2024全国高考作文题解读(Chat GPT 4.0版本)

新课标I卷 阅读下面的材料,根据要求写作。(60分) 随着互联网的普及、人工智能的应用,越来越多的问题能很快得到答案。那么,我们的问题是否会越来越少? 以上材料引发了你怎样的联想和思考?请写…

width: 100%和 width: 100vw这两种写法有什么区别

width: 100%; 和 width: 100vw; 是两种不同的 CSS 写法,它们在实际应用中会有不同的效果。以下是这两种写法的主要区别: width: 100%; 定义:将元素的宽度设置为其包含块(通常是父元素)宽度的 100%。效果:元…