机器学习_16 朴素贝叶斯知识点总结
朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的概率分类算法,广泛应用于文本分类、垃圾邮件检测和情感分析等领域。它通过计算后验概率来进行分类,核心假设是特征之间相互独立。今天,我们就来深入探讨朴素贝叶斯的原理、实现和应用。
一、朴素贝叶斯的基本概念
1.1 朴素贝叶斯的定义
朴素贝叶斯算法基于贝叶斯定理,通过计算给定特征条件下每个类别的概率,选择概率最大的类别作为预测结果。其核心假设是特征之间相互独立,这一假设虽然在现实中往往不成立,但朴素贝叶斯在许多任务中仍然表现出色。
1.2 贝叶斯定理
贝叶斯定理是朴素贝叶斯算法的理论基础,公式如下:
P(Y∣X)=P(X∣Y)⋅P(Y)/P(X)
其中:
-
P(Y∣X) 是在给定特征 X 的条件下类别 Y 的后验概率。
-
P(X∣Y) 是在给定类别 Y 的条件下特征 X 的似然概率。
-
P(Y) 是类别 Y 的先验概率。
-
P(X) 是特征 X 的边缘概率。
1.3 朴素假设
朴素贝叶斯的核心假设是特征之间相互独立,即:
P(X1,X2,…,Xn∣Y)=P(X1∣Y)⋅P(X2∣Y)⋅…⋅P(Xn∣Y)
这一假设简化了计算过程,使得模型训练和预测更加高效。
二、朴素贝叶斯的类型
2.1 多项式朴素贝叶斯(Multinomial Naive Bayes)
适用于处理离散型数据,如文本分类中的词频数据。它假设特征的条件概率服从多项分布,常用于处理文本数据中的词频或TF-IDF特征。
2.2 高斯朴素贝叶斯(Gaussian Naive Bayes)
适用于处理连续型数据,假设特征的条件概率服从高斯分布。它通过计算特征的均值和方差来估计概率,适用于数值型特征。
2.3 伯努利朴素贝叶斯(Bernoulli Naive Bayes)
适用于二值特征数据,假设特征的条件概率服从伯努利分布。它常用于处理二值化后的文本数据,例如是否包含某个词。
三、朴素贝叶斯的实现与案例
3.1 Python实现
以下是使用Python和Scikit-Learn库实现多项式朴素贝叶斯分类的代码示例:
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report# 示例文本数据集
corpus = ["这部电影非常精彩,我喜欢它。", "这个电影很糟糕,我讨厌它。","这是一个很好的书。", "这个故事令人沮丧。","我不推荐这部电影。", "这家餐厅的食物很美味。","这部电视剧拖沓无味,不值得一看。", "这首歌让我心情愉快。","这款手机操作复杂,用户体验很差。", "她的表演真是令人印象深刻。","这个游戏太刺激了,非常好玩。", "这本新出的小说非常难以入手。","我喜欢这个乐队的每一首歌。", "这次旅行很糟,酒店条件非常差。","这款笔记本电脑的性能超出了我的期望。", "电影院的座位非常不舒服。","这个演讲非常有启发性和教育意义。", "这部科幻小说的剧情紧凑,引人入胜。","这款洗发水根本不起泡沫,浪费钱。", "这部历史书籍写得生动,让人仿佛穿越了时空。"
]
labels = [1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1] # 1表示积极,0表示消极# 文本向量化
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2, random_state=42)# 创建多项式朴素贝叶斯分类器
nb_classifier = MultinomialNB()# 训练模型
nb_classifier.fit(X_train, y_train)# 预测测试集
y_pred = nb_classifier.predict(X_test)# 评估模型性能
accuracy = accuracy_score(y_test, y_pred)
print("模型准确率:", accuracy)
print("分类报告:\n", classification_report(y_test, y_pred))
3.2 案例分析
假设我们有一组电影评论数据,记录了评论文本和情感标签(积极或消极)。我们希望通过朴素贝叶斯模型预测评论的情感倾向。
-
数据准备:收集电影评论文本和情感标签。
-
特征提取:使用
CountVectorizer或TfidfVectorizer将文本数据转换为数值型特征。 -
模型训练:使用多项式朴素贝叶斯分类器拟合数据。
-
模型评估:通过准确率、召回率等指标评估模型性能。
-
预测应用:根据模型预测新评论的情感倾向,为情感分析提供参考。
四、朴素贝叶斯的优化与局限性
4.1 优化方法
-
平滑技术:如拉普拉斯平滑,用于处理零概率问题,避免因某个特征在某个类别中未出现而导致概率为零。
-
特征选择:选择与目标变量相关性高的特征,减少噪声特征的影响。
4.2 局限性
-
特征独立性假设:假设特征之间相互独立,这在现实中往往不成立,可能影响模型的准确性。
-
对数据分布的假设:高斯朴素贝叶斯假设特征服从高斯分布,如果数据不符合这一假设,模型性能可能下降。
-
不适用于回归问题:朴素贝叶斯主要用于分类问题,不适用于回归任务。
五、朴素贝叶斯的应用场景
5.1 文本分类
朴素贝叶斯广泛应用于文本分类任务,如垃圾邮件检测、情感分析、主题分类等。它通过计算词频或TF-IDF特征的概率来进行分类。
5.2 医学诊断
在医学领域,朴素贝叶斯可以用于疾病诊断,根据患者的症状和检查结果预测疾病的可能性。
5.3 推荐系统
朴素贝叶斯可以用于推荐系统,根据用户的历史行为和兴趣预测用户对新物品的偏好。
👏觉得文章对自己有用的宝子可以收藏文章并给小编点个赞!
👏想了解更多统计学、数据分析、数据开发、数据治理、机器学习算法、深度学习等有关知识的宝子们,可以关注小编,希望以后我们一起成长!
相关文章:
机器学习_16 朴素贝叶斯知识点总结
朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的概率分类算法,广泛应用于文本分类、垃圾邮件检测和情感分析等领域。它通过计算后验概率来进行分类,核心假设是特征之间相互独立。今天,我们就来深入探讨朴素贝叶斯的原理…...
Xshell连接虚拟机ubuntu,报错(port 22): Connection failed.
Connecting to 192.168.37.131:22... Could not connect to 192.168.37.131 (port 22): Connection failed. 虚拟机ubuntu 可以ping通,但就是连接不上。 先后排查了, 1. 网络适配器是否被禁用 2.设置虚拟机网络适配器的网络连接模式为桥接模式…...
浏览器报错:无法访问此网站 无法找到xxx.xxx.net的DNS地址。正在诊断该问题。尝试运行Windows网络诊断。DNS_PROBE_STARTED
🤟致敬读者 🟩感谢阅读🟦希望我的文章能帮到您🟪如有兴趣可点关注了解更多内容 📘博主信息 点击标题👆有惊喜 📃文章前言 🔷文章均为学习和工作中整理的笔记,分享记录…...
2024年国赛高教杯数学建模C题农作物的种植策略解题全过程文档及程序
2024年国赛高教杯数学建模 C题 农作物的种植策略 原题再现 根据乡村的实际情况,充分利用有限的耕地资源,因地制宜,发展有机种植产业,对乡村经济的可持续发展具有重要的现实意义。选择适宜的农作物,优化种植策略&…...
React中如何处理高阶组件中的错误
在 React 高阶组件中处理错误是确保应用程序健壮性和稳定性的重要环节。以下是一些处理高阶组件中错误的常见方法: 1. 捕获渲染时的错误 在高阶组件中,渲染过程可能会因为各种原因(如 props 数据格式错误、组件内部逻辑异常等)抛…...
CentOS/RHEL如何更换国内Yum源
在国内使用CentOS或RHEL系统时,默认的Yum源是国外的,这可能导致软件包的下载速度慢,甚至出现连接超时的问题。为了解决这个问题,我们可以将Yum源切换到国内的镜像源,从而大大提高软件包的下载速度和稳定性。 本文将详…...
linux 替换jar包中的文件
在 Linux 系统中替换 JAR 文件中的文件,一般可以使用jar命令来完成,以下是具体步骤8: 查找目标文件在 JAR 包中的路径:使用jar tvf命令可以列出 JAR 包中的所有文件,再通过grep命令来过滤出要替换的目标文件。例如&am…...
如何系统成为高级Qt工程师?
要系统性地成为高级Qt工程师,需要从基础到进阶逐步构建知识体系,并结合实战经验、源码分析和架构设计能力的提升。以下是分阶段的系统性学习路径和建议: 一、夯实基础阶段 C++深度掌握 精通C++11/14/17特性(智能指针、lambda、移动语义等)理解面向对象设计、设计模式(如观…...
A9. Jenkins Pipeline自动化构建,飞书通知
怎么收集服务部署信息?【前置】首先Python如何操作JSON数据如何记录部署信息,什么时机统计?如何下发某一服务统计信息 ?那么怎么创建飞书通知机器人呢?编写飞书通知脚本总结下面我们接着上一篇文章《A8. Jenkins Pipeline自动化部署过程,多模块远程服务协调实战》继续往下…...
firefox升级后如何恢复收藏夹和密码的问题
手贱,无聊,看到Firefox提示说再不升级就不能使用了,结果就信了; 升级完之后,傻眼了,收藏夹无法导入,密码全没了 新版的Firefox采用snap方式安装,所以安装路径是在snap下面的&#…...
维护ceph集群
1. set: 设置标志位 # ceph osd set <flag_name> # ceph osd set noout # ceph osd set nodown # ceph osd set norecover 2. unset: 清除标志位 # ceph osd unset <flag_name> # ceph osd unset noout # ceph osd unset nodown # ceph osd unset norecover 3. 标志…...
亲测!我是如何用 Anything LLM 等搭建 AI 智能知识库的
以下是本地部署Anything LLMOllamaDeepSeek R1打造AI智能知识库的教程: 安装Ollama 下载Ollama:浏览器进入ollama.com主页,点击页面右上角或中间下端黑底的“Download”。选择对应的系统图标,如Windows用户点击“Download for W…...
汽车零部件开发应该具备哪些编程思维?
目录 1、功能安全思维 2、实时性与确定性思维 3、可靠性和冗余思维 4、硬件软件协同思维 5、CAN总线通信思维 6、故障诊断和自诊断思维 7、功耗优化思维 8、软件更新和版本管理思维 9、用户体验与安全性思维 汽车零部件开发中,嵌入式软件在车辆系统中的作用…...
利用 OpenCV 进行棋盘检测与透视变换
利用 OpenCV 进行棋盘检测与透视变换 1. 引言 在计算机视觉领域,棋盘检测与透视变换是一个常见的任务,广泛应用于 摄像机标定、文档扫描、增强现实(AR) 等场景。本篇文章将详细介绍如何使用 OpenCV 进行 棋盘检测,并…...
DeepMind发布Matryoshka(套娃)量化:利用嵌套表示实现多精度LLM的低比特深度学习
本文将介绍 Google DeepMind 提出的 Matryoshka 量化技术,该技术通过从单个大型语言模型 (LLM) 实现多精度模型部署,从而革新深度学习。我们将深入研究这项创新技术如何提高 LLM 的效率和准确性。 随着深度学习模型在规模和复杂度上持续增长,…...
DeepSeek01-本地部署大模型
一、ollama简介: 什么是 Ollama? Ollama 是一个用于本地部署和管理大模型的工具。它提供了一个简单的命令行界面, 使得用户可以轻松地下载、运行和管理各种大模型。Ollama 支持多种模型格式, 并且可以与现有的深度学习框架&#x…...
Java-数据结构-(HashMap HashSet)
一、Tree和Hash的区别 在上一篇文章中,我们讲到了"TreeMap"和"TreeSet",但当我们刷题的时候却会发现,实际应用Map和Set时,却常常都只会用"HashMap"和"HashSet",这是为什么呢…...
举个栗子:浅显易懂的理解Transformer 模型
用一个简单的比喻来解释 Transformer 模型,让你轻松理解它的工作原理。 Transformer 的比喻:一个高效的翻译团队 想象一下,Transformer 模型就像一个高效的翻译团队,它的任务是把一段英文翻译成中文。这个团队由两部分组成&#…...
el-table 结合 slot 具名插槽遍历封装列表模板
基础效果 要实现以上效果,可对 el-table 进行封装,将列配置视为数组,循环 el-table-column 标签模板组件 <div class"tableSlot"><el-table :data"dataList" border><el-table-columnv-for"(item, …...
游戏引擎学习第108天
仓库:https://gitee.com/mrxiao_com/2d_game_2 看一下我们现在的进展 今天的工作重点是处理游戏中的Z轴问题,特别是如何在不同的层级之间进行移动,并确保Z轴的处理方式与真实世界中的透视效果一致。当前,游戏中的Z轴运动存在问题࿰…...
遵循规则:利用大语言模型进行视频异常检测的推理
文章目录 速览摘要01 引言02 相关工作视频异常检测大语言模型 03 归纳3.1 视觉感知3.2 规则生成Normal and Anomaly (正常与异常)Abstract and Concrete (抽象与具体)Human and Environment (人类与环境) 3…...
网页制作01-html,css,javascript初认识のhtml的基本标记
一、 Html简介 英文全称是 hyper text markup language,超文本标记语言,是全球广域网上描述网页内容和外观的标准. Html作为一款标记语言,本身不能显示在浏览器中.标记语言经过浏览器的解释和编译,才能正确地反映html标记语言的内容. 1.html 的基本标记 1)头部标…...
vue 判断字符串开头是http或者https
在 Vue 中判断字符串是否以 http 或 https 开头,可以通过以下步骤实现: 方法一:使用 startsWith() 方法 // 在 Vue 组件的方法或计算属性中 isExternalLink(url) {return url?.startsWith(http://) || url?.startsWith(https://); }方法二…...
linux常用命令大全(包括抓包、网络检测、路由等,做项目一点点总结而来!)
文章目录 常用命令**apt相关****ls**:**cd****cp****ls -l | grep ssh**:会列出当前目录中包含 “ssh” 的文件或目录的详细信息。**系统资源**linux路由相关抓包工具和命令tcpdumpwiresharktshark iperf 常用命令 通过上下方向键 ↑ ↓ 来调取过往执行过…...
HarmonyOS组件之Tabs
Tabs 1.1概念 Tabs 视图切换容器,通过相适应的页签进行视图页面的切换的容器组件每一个页签对应一个内容视图Tabs拥有一种唯一的子集元素TabContent 1.2子组件 不支持自定义组件为子组件,仅可包含子组件TabContent,以及渲染控制类型 if/e…...
Linux学习笔记之虚拟地址空间
1.示例引入 运行如下代码那么运行结果如下图。 #include<stdio.h> #include<unistd.h>int main() {pid_t id fork();if(id-1){printf("创建进程错误!\n");return 1;}int size0;if(id0){//子进程while(1){printf("我是子进程,…...
前端高级面试题
以下是一些前端高级面试可能涉及到的内容: 一、前端工程化 如何构建一个适合大型团队的前端代码规范和构建流程? 答案: 代码规范方面: 使用ESLint结合Prettier来统一JavaScript和CSS(包括预处理器如Sass或Less)的语法风格。例如,规定变量命名采用驼峰命名法,函数名要有…...
MySQL判空函数--IFNULL函数的使用
文章目录 IFNULL函数介绍IFNULL函数的语法举例相关扩展 IFNULL函数介绍 在MySQL中,IFNULL函数用于判断给定的表达式是否为NULL。如果表达式为NULL,则IFNULL函数返回指定的替代值;如果表达式不为NULL,则返回表达式本身的值。 IFN…...
HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?
一、前言 作为现代互联网通信的基石,HTTP协议定义了客户端与服务器之间的“对话规则”。每一次网页加载、API调用或文件传输的背后,都离不开精心构造的HTTP请求与响应。请求中封装了用户的意图——从请求方法、资源路径到提交的数据;响应则承…...
二〇二四年终总结
写在前面 简单总结一下告诉自己,曾经活着 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树 原本应该 24 年年中的时候写 23 年年终的总结,但是一直拖着&…...
