python与朴素贝叶斯算法(附示例和代码)

news/2025/3/9 13:51:42/文章来源:https://www.cnblogs.com/eyiol/p/18760658

朴素贝叶斯算法是基于贝叶斯定理的一种简单概率分类算法,广泛应用于垃圾邮件分类、文本分类和情感分析等领域。它的“朴素”二字源于算法对特征之间的相互独立性假设。在现实情况下,虽然这种假设可能并不完全成立,但朴素贝叶斯分类器表现出的性能令人印象深刻,尤其是在处理大型数据集时。

朴素贝叶斯的基本概念

朴素贝叶斯分类器基于一个简单假设:特征之间相互独立。换句话说,在给定类别标签的情况下,出现特定特征的概率独立于其它特征。此外,它运用贝叶斯定理来估计给定观测数据属于某特定类别的后验概率。

数学上,贝叶斯定理表达为:

P(C|X) = P(X|C) * P(C) / P(X)

这里:

  • P(C|X) 是在给定特征X的情况下,属于类别C的后验概率。
  • P(X|C) 是类别C出现后,特征X同时出现的概率。
  • P(C) 是任何情况下类别C出现的先验概率。
  • P(X) 是任何情况下特征X出现的概率。

分类器的工作就是找到能使后验概率P(C|X)最大化的类别C。

在Python中实现朴素贝叶斯

Scikit-learn是Python的一个功能强大的机器学习库,其中包含了朴素贝叶斯算法的多种实现。以下是一个简单的示例,演示了如何在Python中使用Scikit-learn实现朴素贝叶斯进行文本分类。

# 导入必要的库
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
import seaborn as sns; sns.set()# 加载数据集
data = fetch_20newsgroups()# 选择分类的类别
categories = ['alt.atheism', 'talk.religion.misc', 'comp.graphics', 'sci.space']# 利用sklearn的fetch_20newsgroups方法加载数据
train = fetch_20newsgroups(subset='train', categories=categories)
test = fetch_20newsgroups(subset='test', categories=categories)# 创建一个管道,组合一个TfidfVectorizer和一个MultinomialNB分类器
model = make_pipeline(TfidfVectorizer(), MultinomialNB())# 训练模型
model.fit(train.data, train.target)# 预测测试集
labels = model.predict(test.data)# 创建混淆矩阵
mat = confusion_matrix(test.target, labels)# 绘制混淆矩阵
sns.heatmap(mat.T, square=True, annot=True, fmt='d', cbar=False,xticklabels=train.target_names, yticklabels=train.target_names)# 绘制结果
plt.xlabel('true label')
plt.ylabel('predicted label')# 测试模型性能
accuracy = model.score(test.data, test.target)
print(f"Model accuracy: {accuracy*100:.2f}%")
 
 

该代码首先导入了必要的库,并加载了20个新闻组数据集,这里只选取了其中的几个类别于演示。接着使用Scikit-learn的管道(make_pipeline)将文本向量化器(TfidfVectorizer)与多项式朴素贝叶斯分类器(MultinomialNB)结合起来,从而简化了模型构建、训练和预测的过程。最后,代码展示了预测结果的准确性,并绘制了混淆矩阵。

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

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

相关文章

PTE Hook及x64分页机制的研究

什么是PTE Hook 常规的inlineHook思路是直接修改目标函数的代码,使其先执行我们自己的函数,再跳转回来执行原函数。这种Hook是全局的,即Windows中每一个进程一旦调用被Hook的函数,就会受到我们的影响,也很容易被PatchGuard检查到。 因此提出一种新的Hook思路,隔离具体进程…

.net core/IIS/Kestrel 大文件上传大小设置

MultipartBodyLengthLimit 设置每个多部分正文的长度限制。 分析超出此限制的窗体部分时,会引发 InvalidDataException。 默认值为 134,217,728 (128 MB)。 使用 MultipartBodyLengthLimit 中的 Startup.ConfigureServices 设置自定义此限制:public void ConfigureServices(I…

RHEL8操作系统安装方法

目录第一步:打开VMware软件,创建我们的虚拟机(也就是创建一台虚拟的电脑)第二步 载入rhel8版本的iso文件,进行操作系统的安装 第一步:打开VMware软件,创建我们的虚拟机(也就是创建一台虚拟的电脑)说明:这里使用的是NAT网络模式,可以上网,这三种网络的模式讲解可以看…

关于USB声卡导致windows无法自动关闭屏幕或休眠的案例

问题描述:本人买了一台漫步者S880MKII使用自带的type-C线插到笔记本上后,win11系统的超时息屏和超时睡眠功能失效。解决方法:打开设备管理器(图1) 找到以下输出设备,点击事件查看到类似“VID_20B1”信息的设备 (图2) 禁用设备(图3)至此,睡眠功能恢复正常。 注:有副…

P1219 [USACO1.5] 八皇后 Checker Challenge

题目描述 一个如下的 $6 \times 6$ 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列 $2\ 4\ 6\ 1\ 3\ 5$ 来描述,第 $i$ 个数字表示在第 $i$ 行的相应位置有一个棋子,…

专业代加工公司预览-芯晨微纳(河南)光电科技有限公司

一提“代加工”,很多人不自觉的会有几个误区,认为代工就是粗制滥造、没有技术创新,夹缝中求生存。 实际上,代加工也属于技术密集型、设备密集型产业,能为各种企业解决“无设备、无技术、无资金、与工人”等诸多问题,配合企业完成各种验证和测试,称得上企业的最大帮手。 …

JavaWeb学习(八)

JavaWeb学习(八):Web后端开发 —— Spring 目录JavaWeb学习(八):Web后端开发 —— Spring概念SpringBootWeb 快速入门 本文为个人学习记录,内容学习自 黑马程序员概念Spring 是全世界最流行的 Java 框架,它使得 Java 程序更快、更方便、更安全 Spring 提供了多个子项目…

P3629 [APIO2010] 巡逻

P3629 [APIO2010] 巡逻 看题解大佬们都用数学推理求两遍直径的方法,然而萌新并不会这么高级的方式,只能大力分讨了。 思路 对于 \(k=1\) 的情况,加上一条边时,树上出现了一条环且长为 \(S\),环上的原路径都可以少走一遍,再算上新路径要走一遍。此时答案为 \(2 \times (n-…

python——常用函数map、lambda

lambda:英文含义是,希腊字母表第11个字母 https://baijiahao.baidu.com/s?id=1781168343754714555&wfr=spider&for=pc

全面的C#/.NET/.NET Core面试宝典(永久免费)

前言C#/.NET/.NET Core相关技术常见面试题汇总,不仅仅为了面试而学习,更多的是查漏补缺、扩充知识面和大家共同学习、携手进步。该知识库主要由自己平时学习和工作实践总结、网上优秀文章资料收集(这一部分一定会标明来源)和社区小伙伴提供三部分组成。 面试宝典获取方式因…

20241909 2024-2025-2《网络攻防实践》第2次作业

@目录1. 知识点梳理与总结1.1实验要求1.2知识点总结2. 实验过程2.1 实验环境2.2 详细实验过程2.2.1查询baidu.com2.2.2 查询某一好友的IP地址,地理位置2.2.3 使用nmap开源软件对靶机环境进行扫描,回答以下问题并给出操作命令。2.2.4 使用Nessus开源软件对靶机环境进行扫描,回…

dify跨域问题

在本地电脑上,通过vmware安装dify使用时,没有遇到这个问题。 部署dify之后,在添加模型的API-key的时候,一直添加不上,没有反应。打开控制台报错截图如下:报错信息 - Access to fetch at https://marketplace.dify.ai/api/v1/plugins/search/advanced from origin http://…