机器学习——贝叶斯(三种分布)/鸢尾花分类分界图/文本分类应用
0、前言:
- 机器学习中的贝叶斯的理论基础是数学当中的贝叶斯公式。
- 这篇博客强调使用方法,至于理论未作深究。
- 机器学习中三种类型的贝叶斯公式:高斯分布(多分类)、多项式分布(文本分类)、伯努利分布(二分类任务)
- 贝叶斯算法优点:对小规模数据表现好,能处理多分类任务,常用于文本分类。缺点:只能用于分类问题。
1、高斯分布的贝叶斯算法:
- 应用:鸢尾花分类任务分界图
# 导入基础库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris# 导入贝叶斯(高斯分布、多项式分布、伯努利分布)
from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB
data,target = load_iris(return_X_y=True)
display(data.shape, target.shape)data2 = data[:,2:].copy()
# 训练模型
GS_nb = GaussianNB()
GS_nb.fit(data2,target)# 画分界图
# 先生成x坐标和y坐标
X = np.linspace(data2[:,0].min(),data2[:,0].max(),1000)
Y = np.linspace(data2[:,1].min(),data2[:,1].max(),1000)# 然后将x坐标和y坐标对应的网格坐标对应出来
nx,ny = np.meshgrid(X,Y)# 扁平化
nx = nx.ravel()
ny = ny.ravel()# 组合堆积成新的数据集
disdata = np.c_[nx,ny]
pd.DataFrame(disdata).head(3)# 预测
disdata_pred = GS_nb.predict(disdata)# 绘制分界图(这种速度比较慢)
plt.scatter(disdata[:,0],disdata[:,1],c=disdata_pred)
plt.scatter(data2[:,0],data2[:,1],c=target,cmap='rainbow')# 绘制分界图(这种速度快)
plt.pcolormesh(X,Y,disdata_pred.reshape(1000,-1)) # 将'disdata_pred'的值以伪彩色图(plt.pcolormesh)的形式在二维网格上显示出来。
plt.scatter(data2[:,0],data2[:,1],c=target,cmap='rainbow') # cmap='rainbow'是matplotlib库中plt.scatter函数的一个参数。这个参数用于指定色彩映射(colormap)。在这种情况下,'rainbow'是一种色彩映射,它会从红色开始,逐渐过渡到橙色、黄色、绿色、青色、蓝色和紫色。
- 在这个应用中,用多项式分布的贝叶斯分类效果没有高斯分布好,而伯努利分布的贝叶斯只能用于二分类任务。
2、三种贝叶斯算法的文本分类应用效果:
- 代码:
# 老三件
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 导入三种贝叶斯算法
from sklearn.naive_bayes import GaussianNB,MultinomialNB,BernoulliNB
# 导入数据(5571条数据,有两列,其中第一列为标签,第二列为短信内容)
data = pd.read_table('./data2/SMSSpamCollection',header=None)
pd.DataFrame(data).head(2)
# 从数据中分词,并且统计每个短信中分词的出现频率,最终呈现一个稀疏矩阵作为贝叶斯算法的输入
a_data = data[1].copy()
target = data[0].copy()
a_data.shape # 一维
from sklearn.feature_extraction.text import TfidfVectorizer # 特征提取库中的Tfid~是用于文本数据的特征提取
'''
1、TfidfVectorizer将文本数据转换为特征向量形式,每个词表示一个特征维度,每个维度的值是这个词在文本中的权重(出现的次数)
2、这个库是文本数据用于机器学习模型的关键步骤
3、导入后使用方法和机器学习算法非常类似,要先创建对象,然后fit()
'''
# 创建特征词向量的对象
tf = TfidfVectorizer()
tf.fit(a_data) # 输入一维的源文本数据即可,这一步会统计分词信息
X = tf.transform(a_data).toarray() # 这一步会根据上面统计的分词信息构建稀疏矩阵# tf.transform(a_data):
# <5572x8713 sparse(稀疏) matrix of type '<class 'numpy.float64'>'
# with 74169 stored elements in Compressed Sparse Row format>
# .toarray(),就是将结果转换为array数组
# 高斯分布贝叶斯
GS = GaussianNB()
GS.fit(X,target)
GS.score(X,target) # 0.9414931801866475
# 多项式分布贝叶斯
MT = MultinomialNB()
MT.fit(X,target)
MT.score(X,target) # 0.9761306532663316
# 伯努利分布贝叶斯
BE = BernoulliNB()
BE.fit(X,target)
BE.score(X,target) # 0.9881550610193827
# 预测数据处理,要按照之前特征词向量对象模型转换(不能重新设置特征词向量对象后fit,会导致测试数据维度和训练模型的输入数据维度不匹配)
m = ['hello, nice to meet you','Free lunch, please call 09999912313','Free lunch, please call 080900031 9am - 11pm as a $1000 or $5000 price'
]
m = tf.transform(m).toarray()
# 测试预测
GS.predict(m) # array(['ham', 'ham', 'ham'], dtype='<U4')
MT.predict(m) # array(['ham', 'ham', 'spam'], dtype='<U4')
BE.predict(m) # array(['ham', 'ham', 'spam'], dtype='<U4')
- 总结:
1、在进行文本分类时调用贝叶斯算法的方式还是中规中矩,其中一个难点是读数据时要先知道数据的格式,然后才能通过pandas来读取
2、非常重要的一个工具就是sklearn库提供的分词工具from sklearn.feature_extraction.text import TfidfVectorizer,它可以把一个一维的文本数据(每个元素是一个句子文本的列表或者其他一维数据)通过fit方法将其特征词提取出来,进行分词,之后通过transform方法再次输入数据就可以把数据变成稀疏矩阵,然后再次通过toarray方法将数据变成真真的numpy二维数组。
3、从文本分类结果看,多项式分布更适合做文本分类,但是对于二分类文本分类任务伯努利效果更佳。
相关文章:

机器学习——贝叶斯(三种分布)/鸢尾花分类分界图/文本分类应用
0、前言: 机器学习中的贝叶斯的理论基础是数学当中的贝叶斯公式。这篇博客强调使用方法,至于理论未作深究。机器学习中三种类型的贝叶斯公式:高斯分布(多分类)、多项式分布(文本分类)、伯努利分…...

SOLIDWORKS Composer位置关键帧的使用
SOLIDWORKS Composer是专业的SOLIDWORKS及3D文件处理的动画制作软件,作为SOLIDWORKS 产品线下的一个明星存在。 SOLIDWORKS Composer几乎可以处理任何SOLIDWORKS的模型文件并将之转化成可以动作的机械动画,可以引用在企业的网站、产品说明书以及工作指导…...
PostgreSQL 流复制搭建与维护
文章目录 前言1. 配置环境1.1 环境介绍1.2 主库白名单1.3 主库参数配置 2. 流复制搭建2.1 备份恢复2.2 创建复制用户2.3 参数修改2.4 启动并检查2.5 同步流复制2.6 同步复制级别 3. 流复制监控3.1 角色判断3.2 主库查看流复制3.3 延迟监控3.4 备库查询复制信息 前言 PostgreSQ…...
【Redis】关于过期数据清除的一些策略
这里要讨论的为过期的数据是如何被清除的,也就是网上常常讨论的过期清除策略。 需要注意的是,redis除了会对过期的数据进行淘汰,也可以通过对内存大小进行限制,并对超出内存限制后进行数据淘汰。此时淘汰的数据未必是过期的&…...
动态SQL
Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题。 1、if if标签可通过test属性的表达式进行判断,若表达式的结果为true,则标签中的内容会执行;反之标签…...

uniapp:OCR识别身份证上传原图失败,问题解决
1、上传普通图片成功 2、上传>4M | >5M图片失败检查:1、uni.uploadFile自身没有文件大小限制。然而,这仍然取决于你的应用程序所在的平台和存储空间容量。 2、上传照片后不在fail,在sucess 提交照片-3 {"data": "<h…...
shell循环和函数
目录 1.for循环2.while循环3.until循环4.函数 1.for循环 for循环是固定循环,也就是在循环时就已经知道需要进行几次的循环,有事也把for循环成为计数循环。for的语法如下两种: 语法一 for 变量 in 值1 值2 值3 …(可以是一个文件等)do程序do…...
京东详情api
简要描述 根据商品id获取详情数据 请求URL http://xxx.xxx.xxx.xxx:xxxx/jd.get.item 请求方式 get 请求Query参数 参数名示例值必选类型说明itemid100016034386是string商品idtokenadmin.api是string权限token 成功返回示例 部分数据展示: {"data&qu…...

MySQL最新版8.1.0安装配置教程
目录 目录 前言 安装流程图 1,MySQL数据库是什么? 2,下载zip压缩包 3,解压到要安装的目录 4,添加环境变量 4.1,找到环境变量 4.2,进行环境变量的添加 5.新建mysql 配置文件 6、安装mysql服务 7、初始化数据文件 8、启动mysql …...
5G试题_1
1、 全息技术属于对5G三大类应用场景网络需求中的哪一种?(A) A. 增强移动宽带 B. 海量大连接 C. 低时延高可靠 D. 低时延大带宽 2、 在5G时代,不同领域的不同设备大量接入网络,其实引用传统的组网方式和服务提供形式也…...

正规股票配资网站的三个明显特点分析
随着股票市场的快速发展,越来越多的投资者开始考虑使用股票配资来增加自己的资金流动性和收益率。然而,在选择股票配资网站时,投资者往往难以辨别哪些网站是正规的,哪些网站存在风险。因此,以下将分析正规股票配资网站…...

质疑苹果5G信号造假成为闹剧,反而将运营商置于尴尬境地
在iPhone15发布会处于热点之际,一位号称通信专家的人士指责iPhone的5G信号造假,一度闹得沸沸扬扬,导致舆论一开始都是质疑苹果造假,然而在知乎却有更多专业人士指出这位专家不了解5G技术,这个问题或许反而出在运营商身…...
vue 预览zip
ZIP的数据从接口传递数据流过来。解析数据流,并将zip的目录绑定到tree中。 1.引入插件jszip: yarn add jszip 2.在需要引用的页面引用: import JSZip from jszip 3. 实现代码 api(option).then((res)>{ // 接口获取zip的数据流 l…...
人先自辱,而后人辱之
语出《孟 子.离娄上》“夫人必自街,而后人懈之;家必自毁,而后人毁之"。 自己不把自己当人看,别人肯定也不会。善待自己,接纳自己。 过去的不再留恋。 心平气和,气定神闲。 政治论述题,每一个题目&a…...

web端三维重建算法-colmap++
vismap vismap 是colmap 版本 (1) 支持superpoint superglue (2) 支持netvlad 图像检索 (3)支持特征点尺度定权 (4)支持二维码定位 (5)支持融合gps &#x…...

MyBatisPlus(二)基础Mapperr接口:增删改查
MyBatisPlus:基础Mapper接口:增删改查 插入一条数据 代码 Testpublic void insert() {User user new User();user.setId(6L);user.setName("张三");user.setAge(25);user.setEmail("zhangsanexample.com");userMapper.insert(use…...
基础项目实用案例
文章目录 倒计时动态生成表格发布留言密码框验证模态框拖拽 倒计时 function countDown(time) {var nowTime new Date();var inputTime new Date(time);var times (inputTime - nowTime) / 1000;var d parseInt(times / 60 / 60 / 24);d d < 10 ? 0 d : d;var h par…...
sprngboot整合kabana
Spring Boot是一个开源框架,可以基于Spring框架快速开发和构建生产级别的应用程序。Kibana是一个可视化和交互式分析平台,用于检索和分析Elasticsearch集群中存储的数据。 下面是Spring Boot整合Kibana的基本步骤: 添加Maven依赖 在pom.xm…...

PostgreSQL 数据备份恢复
文章目录 PostgreSQL 备份方式SQL备份(逻辑备份)文件系统备份(物理备份)归档备份(物理备份) 逻辑备份&恢复物理备份&恢复(全量)备份恢复 物理备份&恢复(某个…...

线性代数的本质(七)——特征值和特征向量
特征值和特征向量 本章特征值和特征向量的概念只在方阵的范畴内探讨。 相似矩阵 Grant:线性变换对应的矩阵依赖于所选择的基。 一般情况下,同一个线性变换在不同基下的矩阵不同。仍然以平面线性变换为例,Grant 选用标准坐标系下的基向量 i…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...