实战:朴素贝叶斯文本分类器搭建与性能评估

news2025/2/24 15:11:35

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临,让我们一起踏上这个知识之旅!
请添加图片描述

文章目录

  • 🍋贝叶斯定理简介
  • 🍋贝叶斯分类器
  • 🍋朴素贝叶斯分类器
  • 🍋优势与不足
  • 🍋实战代码
  • 🍋结语

🍋贝叶斯定理简介

贝叶斯分类基于贝叶斯定理,其核心思想是通过先验概率和样本数据计算后验概率,从而进行分类。贝叶斯定理表达为:

在这里插入图片描述

其中,P(A∣B) 是在给定观测数据 B 的情况下事件 A 的后验概率,P(B∣A) 是在事件 A发生的情况下观测到 B 的概率,P(A) 是事件 A 的先验概率,P(B) 是观测到 B 的概率。

🍋贝叶斯分类器

基本原理

贝叶斯分类器基于贝叶斯定理构建,对于给定的输入样本,计算每个类别的后验概率,选择具有最高后验概率的类别作为最终分类结果。
在这里插入图片描述
其中,Likelihood 是给定类别的样本条件下观测到输入数据的概率,Prior 是类别的先验概率,Evidence 是观测到输入数据的概率。

🍋朴素贝叶斯分类器

朴素贝叶斯分类器是贝叶斯分类中的一种常见形式,它假设输入特征之间相互独立,简化了计算。对于给定的输入 X=(x1,x2,…,xn),朴素贝叶斯分类器的决策规则为:
在这里插入图片描述
其中,P(C=c) 是类别 c 的先验概率,P(Xi​=xi​∣C=c) 是在给定类别 c 的情况下特征 Xi​ 的条件概率。

🍋优势与不足

优势

  • 简单有效: 贝叶斯分类器具有简单的理论基础,易于实现。
  • 处理小样本数据: 在数据较少的情况下仍然有效,特别适用于小样本场景。
  • 对噪声数据不敏感: 对于噪声和缺失数据具有较好的鲁棒性。

不足

  • 对输入特征的独立性要求: 朴素贝叶斯分类器假设输入特征之间相互独立,这在某些实际问题中可能不成立。
  • 无法学习特征之间的关系: 由于假设特征独立,不能很好地捕捉特征之间的复杂关系。
  • 需要先验概率: 对先验概率的准确估计要求较多领域知识或足够的样本数据。

🍋实战代码

# 导入所需的库和模块
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn import metrics

# 下载并加载20类新闻数据集
newsgroups = fetch_20newsgroups(subset='all', remove=('headers', 'footers', 'quotes'))

# 特征工程: 将文本转换为TF-IDF表示
vectorizer = TfidfVectorizer(stop_words='english', max_features=1000)
X = vectorizer.fit_transform(newsgroups.data)

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, newsgroups.target, test_size=0.2, random_state=42)

# 构建朴素贝叶斯分类器
classifier = MultinomialNB()
classifier.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = classifier.predict(X_test)

# 输出分类报告
print("Classification Report:")
print(metrics.classification_report(y_test, y_pred))

# 输出混淆矩阵
print("Confusion Matrix:")
print(metrics.confusion_matrix(y_test, y_pred))

运行结果如下
在这里插入图片描述
在这里插入图片描述

🍋结语

贝叶斯分类作为一种基于统计学习的方法,在实际问题中展现了良好的性能。通过充分利用先验知识和观测数据,贝叶斯分类为我们提供了一种有效的分类工具,特别在小样本场景和文本分类等任务中表现出色。

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

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

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

相关文章

Druid源码阅读-DruidStatInterceptor实现

上次我们在druid-spring-boot-starter里面看到有一个DruidSpringAopConfiguration的配置类,然后引入了DruidStatInterceptor这样一个切面逻辑。今天我们就来看一下这个类的实现。 DruidStatInterceptor 这个类的包路径下入com.alibaba.druid.support.spring.stat。…

服务器代码上传到gitlab

服务器代码上传到gitlab 安装Git工具linux:安装Git,使用自带的源安装 yum install git生成密钥文件:使用ssh-keygen生成密钥文件.ssh/id_rsa.pub ssh-keygen 使用cat命令查看密钥,将下面的密钥复制一份 在gitlab上建立一个和…

2023年12月16日~12月22日(自适应反馈机制下基于卷积神经网络的高清晰反射波反演算法:CNN-RWI)

标题:Adaptive Feedback Convolutional-Neural-Network-Based High-Resolution Reflection-Waveform Inversion 全波形反演(FWI)是一种非线性拟合观测地震记录从而获得高清晰速度模型的最优化算法。FWI能够通过拟合浅层初至波和反射波获得较准…

浅学JWT跨域认证

Json Web令牌简称JWT 由HeaderPayloadSignature组成 Header JWT头是一个描述JWT元数据的JSON对象,alg属性表示签名使用的算法,默认为HMAC SHA256(写为HS256);typ属性表示令牌的类型,JWT令牌统一写为JWT。…

湘沪数字产业(上海)协同创新中心正式启动!

前言 随着全球化的加速和市场竞争的日益激烈,产业协作已成为推动科技创新和经济发展的重要手段。在创新驱动战略的推动下,全国形成了在科创核心城市建设科创中心的浪潮,旨在充分利用不同区域的产业优势,加强产业协作,…

BFS解决FloodFill算法相关leetcode算法题

文章目录 1.图像渲染2.岛屿数量3.岛屿的最大面积4.被围绕的区域 1.图像渲染 图像渲染 class Solution {int dx[4] {0,0,1,-1};int dy[4] {1,-1,0,0}; public:vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int…

计算机视觉技术-使用图像增广进行训练

让我们使用图像增广来训练模型。 这里&#xff0c;我们使用CIFAR-10数据集&#xff0c;而不是我们之前使用的Fashion-MNIST数据集。 这是因为Fashion-MNIST数据集中对象的位置和大小已被规范化&#xff0c;而CIFAR-10数据集中对象的颜色和大小差异更明显。 CIFAR-10数据集中的前…

【MIMO 从入门到精通】[P4]【MIMO Communications】

前言&#xff1a; Explains the main approaches to multi-input multi-output (MIMO) communications, including Beamforming, Zero Forcing, and MMSE. * Note that at the 9:19min mark, I made a slight "voice typo", where I should have said: "you nee…

AI进化太快了!Stability AI开源视频生成大模型Stable Video Diffusion

对于 Stable Diffusion&#xff0c;想必读者朋友们对此都不陌生。 自 Stability AI 公司发布 SD&#xff08;全称&#xff1a;Stable Diffusion) 以来&#xff0c;受到了很多人的喜爱。 SDXL 效果 随后技术升级&#xff0c;又发布了 SDXL&#xff0c;名字很有喜感&#xff0c…

计网04-网络传输介质

物理层&#xff08;网卡、传输介质&#xff09; 一、信号 &#xff11;、概念 进行网络通信在线缆中传输的就是信号&#xff0c;网线传输电信号&#xff0c;光纤传输光信号。 信息&#xff1a;对现实事物存在的某种认识数据&#xff1a;描述某些属性的具体的量子&#xff0…

C/C++学习笔记十三 C++中的重载运算符

1、什么是运算符重载&#xff1f; 运算符重载是 C 中的一项功能&#xff0c;使运算符&#xff08;例如 、- 等&#xff09;能够处理用户定义的数据类型。这种机制称为编译时多态性&#xff0c;并提供了为不同数据类型定制运算符行为的优点。 例如&#xff0c;我们可以重载“”运…

基于SpringBoot实现一个可扩展的事件总线

基于SpringBoot实现一个可扩展的事件总线 前言 在日常开发中&#xff0c;我们经常会用到事件总线&#xff0c;SpringBoot通过事件多播器的形式为我们提供了一个事件总线&#xff0c;但是在开发中我们经常会用到其他的实现&#xff0c;比如Guava、Disruptor的。我们将基于Spri…

迪杰斯特拉算法详解

迪杰斯特拉算法详解 首先要知道的是&#xff0c;迪杰斯特拉算法是求解单源最短路径的&#xff0c;就是在一个图中&#xff08;无向图和有向图均可&#xff09;&#xff0c;指定一个源点&#xff0c;求出来这个源点到其他各个节点的最短路径。 存图 首先&#xff0c;我需要用…

HarmonyOS应用兼容稳定性云测试

兼容性测试 兼容性测试主要验证HarmonyOS应用在华为真机设备上运行的兼容性问题&#xff0c;包括首次安装、再次安装、启动、卸载、崩溃、黑白屏、闪退、运行错误、无法回退、无响应、设计约束场景。具体兼容性测试项的详细说明请参考兼容性测试标准。 兼容性测试支持TV、智能穿…

爬虫系列----Python解析Json网页并保存到本地csv

Python解析JSON 1 知识小课堂1.1 爬虫1.2 JSON1.3 Python1.4 前言技术1.4.1 range1.4.2 random1.4.3 time.sleep1.4.4 with open() as f: 2 解析过程2.1 简介2.2 打开调试工具2.3 分析网址2.3.1 网址的规律2.3.2 网址的参数 2.4 爬取第一页内容2.5 存入字典并获取2.6 循环主体数…

DolphinScheduler 介绍及系统架构

目录 一、DolphinScheduler 介绍 1.1 关于 DolphinScheduler 1.2 特性 简单易用 丰富的使用场景 High Reliability High Scalability 1.3 名词解释 1.3.1 名词解释 1.3.2 模块介绍 二、DolphinScheduler 系统架构 2.1 系统架构图 2.2 架构说明 MasterServer 该服…

【Java核心基础】一文带你了解Java中super关键字的重要作用

“super”关键字在编程中扮演着重要角色&#xff0c;它允许我们直接访问父类中的属性、方法或构造函数&#xff0c;即使子类中存在同名元素。此外&#xff0c;“super()”在子类构造函数中调用父类初始化操作&#xff0c;确保父类属性正确初始化。有时&#xff0c;“super”还可…

Python 爬虫之下载视频(五)

爬取第三方网站视频 文章目录 爬取第三方网站视频前言一、基本情况二、基本思路三、代码编写四、注意事项&#xff08;ffmpeg&#xff09;总结 前言 国内主流的视频平台有点难。。。就暂且记录一些三方视频平台的爬取吧。比如下面这个&#xff1a; 一、基本情况 这次爬取的方…

OpenHarmony之内核层解析~

OpenHarmony简介 技术架构 OpenHarmony整体遵从分层设计&#xff0c;从下向上依次为&#xff1a;内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开&#xff0c;在多设备部署场景下&#xff0c;支持根据实际需求裁剪某些非必要的组件…