(Scikit-Learn)朴素贝叶斯使用方法:高斯朴素贝叶斯 多项式朴素贝叶斯(文本分类)

2023-11-16

在贝叶斯分类中,我们希望确定一个具有某些特征的样本属于某类标签的概率,通常记为 P (L | 特征 )。
贝叶斯定理告诉我们,可以直接用下面的公式计算这个概率:
在这里插入图片描述
假如需要确定两种标签,定义为 L1 和 L2,一种方法就是计算这两个标签的后验概率的比值:
在这里插入图片描述
其中,P(L1)和P(L2)的值根据训练集中各个类别的数据所占比例,可以简单方便的获得。

现在需要一种模型,帮我们计算每个标签的 P ( 特征 | Li)。这种模型被称为生成模型,因为它可以训练出生成输入数据的假设随机过程(或称为概率分布)。

满足不同概率分布的数据,会使得模型的训练得到不同的结果。
“朴素贝叶斯”对每种标签的生成模型进行了简单的假设,假设数据满足某种特定的概率分布,且特征变量满足一些特定的关系(线性无关、相关)


导入库

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

(1) 高斯朴素贝叶斯
假设每个标签的数据都服从简单的高斯分布。且变量无协方差(no covariance,指线性无关)。只要找出每个标签的所有样本点均值和标准差,再定义一个高 斯分布,就可以拟合模型了。

生成随机数据:

from sklearn.datasets import make_blobs
X, y = make_blobs(100, 2, centers=2, random_state=2, cluster_std=1.5)
plt.scatter(X[:,0],X[:,1],c=y,s=50,cmap='RdBu')

在这里插入图片描述
实例化高斯模型,并拟合数据:

from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X,y)

生成测试数据,并预测:

rng = np.random.RandomState(0)
Xnew = [-6,-14] + [14,18] * rng.rand(2000,2)
ynew = model.predict(Xnew)

plt.scatter(X[:,0],X[:,1],c=y,s=50,cmap='RdBu')
lim = plt.axis()
plt.scatter(Xnew[:,0],Xnew[:,1],c=ynew,s=20,cmap='RdBu',alpha=0.1)
plt.axis(lim)

在这里插入图片描述
predict_proba 方法计算样本属于某个标签的概率:

yprob = model.predict_proba(Xnew)
yprob[-8:].round(2)

在这里插入图片描述


多项式朴素贝叶斯

还有一种常用的假设是多项式朴素贝叶斯(multinomial naive Bayes),它假设特征是由一个简单多项式分布生成的。多项分布可以描述各种类型样本出现次数的概率,因此多项式朴素贝叶斯非常适合用于描述出现次数或者出现次数比例的特征。

这个理念和前面介绍的一样,只不过模型数据的分布不再是高斯分布,而是用多项式分布代替而已

案例: 文本分类
多项式朴素贝叶斯通常用于文本分类,其特征都是指待分类文本的单词出现次数或者频 次。
这里用 20 个网络新闻组语料库(20 Newsgroups corpus,约 20 000 篇新闻)的单词出现次数作为特征,演示如何用多项式朴素贝叶斯对这 些新闻组进行分类

下载数据并看看新闻组的名字:

from sklearn.datasets import fetch_20newsgroups

data = fetch_20newsgroups()
data.target_names

在这里插入图片描述
为了简化演示过程,只选择四类新闻,下载训练集和测试集:

categories = ['talk.religion.misc','soc.religion.christian','sci.space','comp.graphics']
train = fetch_20newsgroups(subset='train', categories=categories)
test = fetch_20newsgroups(subset='test', categories=categories)

print(train.data[5])

在这里插入图片描述
使用TF–IDF 向量化方法,将每个字符串的内容转换成数值向量,并使用多项式朴素贝叶斯分类器训练。
创建管道,训练数据,预测:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import make_pipeline

model = make_pipeline(TfidfVectorizer(), MultinomialNB())
model.fit(train.data,train.target)
labels = model.predict(test.data)

用混淆矩阵统计测试数据的真实标签与预测标签的结果:

from sklearn.metrics import confusion_matrix
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')

在这里插入图片描述
依据训练得到的模型,构建对任何字符串进行分类的分类器:

def predict_category(s, train=train, model=model):
    pred = model.predict([s])
    return train.target_names[pred[0]]
predict_category('sending a payload to the ISS')
#'sci.space'
predict_category('determining the screen resolution')
'comp.graphics'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(Scikit-Learn)朴素贝叶斯使用方法:高斯朴素贝叶斯 多项式朴素贝叶斯(文本分类) 的相关文章

  • 其他:机器学习算法速查表

    概述 机器学习可以被认为是计算机科学中最有前途和最受期待的领域之一 借助先前的数据 机器学习试图使计算机能够独立学习新事物 机器学习模型接收数据 执行各种计算 并最大限度地提高模型的精度和准确度 机器学习的主要任务包括图像分割 语音识别和推
  • 推荐系统:机器学习中基于内容的过滤

    概述 顾名思义 基于内容的筛选是一种机器学习实现 它使用系统中收集的内容或功能来提供类似的建议 根据用户观察结果从数据集中获取最相关的信息 最常见的例子是 Netflix Myntra Hulu Hotstar Instagram Expl
  • 【数学证明 笔记01】证明常见的逻辑方法有哪些?

    文章目录 一 声明 二 直接证明 三 反证法 四 数学归纳法 五 对证法 六 构造法 七 分情况讨论 一 声明 本帖持续更新中 如有纰漏 望指正 二 直接证明 原理 通过一系列逻辑推理和推断来证明目标命
  • Python-一键爬取图片、音频、视频资源

    前言 使用Python爬取任意网页的资源文件 比如图片 音频 视频 一般常用的做法就是把网页的HTML请求下来通过XPath或者正则来获取自己想要的资源 这里我做了一个爬虫工具软件 可以一键爬取资源 媒体文件 但是需要说明的是 这里爬取资源
  • 天猫双十实战

    import numpy as np import matplotlib pyplot as plt from sklearn linear model import SGDRegressor from sklearn preprocess
  • 机器学习---决策树

    介绍 决策树和随机森林都是非线性有监督的分类模型 决策树是一种树形结构 树内部每个节点表示一个属性上的测试 每个分支代表一个测试输出 每个叶子节点代表一个分类类别 通过训练数据构建决策树 可以对未知数据进行分类 随机森林是由多个决策树组成
  • 【提示工程】Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

    解决问题 探索大语言模型解决推理问题的能力 从头训练或微调模型 需要创建大量的高质量含中间步骤的数据集 成本过大 相关工作 1 使用中间步骤来解决推理问题 1 使用自然语言通过一系列中间步骤解决数学应用题 2 通过创建更大的数据集微调语言模
  • 第二部分相移干涉术

    典型干涉图 相移干涉术 相移干涉术的优点 1 测量精度高 gt 1 1000 条纹 边缘跟踪仅为 1 10 边缘 2 快速测量 3 低对比度条纹测量结果良好 4 测量结果不受瞳孔间强度变化的影响 独立于整个瞳孔的强度变化 5 在固定网格点获
  • 天猫双十实战

    import numpy as np import matplotlib pyplot as plt from sklearn linear model import SGDRegressor from sklearn preprocess
  • 基于ResNet模型微调的自定义图像数据分类

    Import necessary packages import torch import torch nn as nn from torchvision import datasets models transforms from tor
  • 互操作性(Interoperability)如何影响着机器学习的发展?

    互操作性 Interoperability 也称为互用性 即两个系统之间有效沟通的能力 是机器学习未来发展中的关键因素 对于银行业 医疗和其他生活服务行业 我们期望那些用于信息交换的平台可以在我们需要时无缝沟通 我们每个人都有成千上万个数据
  • 互操作性(Interoperability)如何影响着机器学习的发展?

    互操作性 Interoperability 也称为互用性 即两个系统之间有效沟通的能力 是机器学习未来发展中的关键因素 对于银行业 医疗和其他生活服务行业 我们期望那些用于信息交换的平台可以在我们需要时无缝沟通 我们每个人都有成千上万个数据
  • 详解数据科学自动化与机器学习自动化

    过去十年里 人工智能 AI 构建自动化发展迅速并取得了多项成就 在关于AI未来的讨论中 您可能会经常听到人们交替使用数据科学自动化与机器学习自动化这两个术语 事实上 这些术语有着不同的定义 如今的自动化机器学习 即 AutoML 特指模型构
  • Python机器学习实战:用Python构建10个有趣的应用

    机器学习是一门强大的工具 可以用于解决各种各样的问题 通过学习机器学习 您可以开发出能够自动化任务 做出预测甚至创造艺术的应用程序 如果您是一名 Python 开发人员 那么您将很高兴知道 有许多可以用 Python 构建的有趣机器学习应用
  • lr推荐模型 特征重要性分析

    在分析lr模型特征重要性之前 需要先明白lr模型是怎么回事儿 lr模型公式是sigmoid w1 x1 w2 x2 wn xn 其中w1 w2 wn就是模型参数 x1 x2 xn是输入的特征值 对于lr模型来说 特征可以分为两个粒度 一个是
  • MIT_线性代数笔记:第 23 讲 微分方程和 exp(At)

    目录 微分方程 Differential equations 矩阵指数函数 Matrix exponential e A t e At
  • Python机器学习实战:用Python构建10个有趣的应用

    机器学习是一门强大的工具 可以用于解决各种各样的问题 通过学习机器学习 您可以开发出能够自动化任务 做出预测甚至创造艺术的应用程序 如果您是一名 Python 开发人员 那么您将很高兴知道 有许多可以用 Python 构建的有趣机器学习应用
  • 如何用GPT制作PPT和写代码?

    详情点击链接 如何用GPT制作PPT和写模型代码 一OpenAI 1 最新大模型GPT 4 Turbo 2 最新发布的高级数据分析 AI画图 图像识别 文档API 3 GPT Store 4 从0到1创建自己的GPT应用 5 模型Gemin
  • 毕业设计-基于深度学习的细菌微生物目标检测系统系统 YOLO python 目标检测 人工智能 卷积神经网络 机器学习

    目录 前言 设计思路 一 课题背景与意义 二 算法理论原理 2 1 CBAM模块 2 2 损失函数 三 检测的实现 3 1 数据集 3 2 实验环境搭建 3 3 实验及结果分析 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一
  • AI在广告中的应用——预测性定位和调整

    营销人员的工作就是在恰当的时间将适合的产品呈现在消费者面前 从而增加他们购买的可能性 随着时间的推移 营销人员能够深入挖掘越来越精准的客户细分市场 他们不仅具备了实现上述目标的能力 而且这种能力还在呈指数级提升 在AI技术帮助下 现在的营销

随机推荐

  • Kali无法打开Firefox浏览器

    本文章鉴于我本人的学习过程 起初我是能正常打开Firefox浏览器的 在我提升了root权限后浏览器就打不开了 于是我看了几篇其他人解决的办法 解决办法如下 用chown改变权限 输入 chown R root 目前我所遇到的就是这种情况
  • 计算机网络安全的背景

    虽然传统的计算机发展和当今的电子商务不同 但是不可否认网络已经成 为非常重要的信息和数据互换交换的平台 但是随着网络不断发展渗透到人们的日 常生活 手机终端 交易支付等环节时 网络安全已经成为一个焦点和不可逾越的 发展鸿沟 尽管目前网上支付
  • json 插入数据_使用python将数据存入SQLite3数据库

    作者 JiekeXu 2017年毕业于某本科院校 从事于数据库运维行业 一个热爱Python的DBA 个人公众号 JiekeXu之路 Python从网站上抓取的数据为了可以重复利用 一般都会存储下来 存储方式最简单的会选择存储到文本文件 常
  • 微信中的video属性设置

  • python数据驱动测试设计_Python Selenium 之数据驱动测试的实现

    数据驱动模式的测试好处相比普通模式的测试就显而易见了吧 使用数据驱动的模式 可以根据业务分解测试数据 只需定义变量 使用外部或者自定义的数据使其参数化 从而避免了使用之前测试脚本中固定的数据 可以将测试脚本与测试数据分离 使得测试脚本在不同
  • 【 视频 】NTSC和PAL电视制式

    今天的电视机还沿用着50年代彩色电视发明时的标准 它们就是NTSC 国家电视制式委员会 和PAL 逐行倒相 NTSC多用于美国和日本 二战 PAL多用于欧洲 澳大利亚 中东和亚洲地区 本文将介绍NTSC和PAL的主要概念 这些知识对更现代的
  • 苹果Mac电脑文件夹路径怎么看?“访达”也能显示文件路径

    Windows系统中 我的电脑 或 资源管理器 会显示文件 文件夹路径 Mac在 访达 中却不显示 确实不便 也让人费解 连 三指拖移 都是默认不开启 Mac有这类奇怪逻辑就一点也不奇怪了 是的 这是苹果最不可理喻之处 老子就是要到处嚷嚷
  • 力扣刷题(day0011)两个数组的交集

    给定两个数组 nums1 和 nums2 返回 它们的交集 输出结果中的每个元素一定是 唯一 的 我们可以 不考虑输出结果的顺序 示例 1 输入 nums1 1 2 2 1 nums2 2 2 输出 2 示例 2 输入 nums1 4 9
  • python中的连续比较是什么_Python算法的分治算法,python,之,连续,子,列表,最大,和...

    连续子列表的最大和 在一个列表中找到连续子列表的最大和 列表中的数字可负可正 并且子列表不能为空 问题提出 找到以下列表的最大子列表的和 2 1 3 4 1 2 1 5 4 解题思路 最大子列表有可能在左子列表 右子列表与右子列表之间 我们
  • python小数格式:不用科学计数法、不截断

    对于一个小数 如 0 0000000000001 想得到相应的字符串 而不是转换为 1e 12 可以用 numpy 的 format float positional import numpy as np a 0 0001 b 0 0000
  • anaconda安装所有库代码集总

    1 安装jupyter conda install jupyter
  • 接口请求合并的3种技巧,性能直接爆表!

    将相似或重复请求在上游系统中合并后发往下游系统 可以大大降低下游系统的负载 提升系统整体吞吐率 文章介绍了 hystrix collapser ConcurrentHashMultiset 自实现BatchCollapser 三种请求合并技
  • 5.3.6 复合主键@IdClass

    有时一个实体的主键可能同时为多个 例如同样是之前使用的 CustomerEO 实体 需要通过name和email来查找指定实体 当且仅当name和email的值完全相同时 才认为是相同的实体对象 要配置这样的复合主键 步骤如以下所示 1 编
  • 快速排序(Java实现) 单边循环、多边循环

    package com xiaoxin sort import java util Arrays public class quickSort me public static void main String args int arr 9
  • 关于CSS及JS的使用技巧浅谈

    使用CSS预处理器 例如Sass和Less 可以帮助开发者更快速 更有效地编写CSS代码 模块化 将CSS和JS代码分解为模块 可以帮助开发者更好地组织和管理代码 压缩和合并 使用压缩工具可以帮助减少CSS和JS文件的大小 使网站更容易加载
  • minikube单机安装nfs服务

    1 安装 nfs server sudo apt get update sudo apt get install y nfs kernel server 2 创建目录 配置 IP 共享目录绑定 vim etc exports 新增 data
  • Shiro权限框架-实现分布式会话SessionManager(7)

    1 会话的问题 2 分布式会话实现思路 1 原理分析 所有服务器的session信息都存储到了同一个Redis集群中 即所有的服务都将 Session 的信息存储到 Redis 集群中 无论是对 Session 的注销 更新都会同步到集群中
  • vue+elementUI图片预览,<el-image> 的使用

    vue elementUI图片预览 el image 的使用 本文转载自 https www cnblogs com allanlau p 13397625 html 首页定义data data return imgs imgsVisibl
  • 手把手教你使用transciver-ip核的配置

    目前很多行业都会用到transceiver 甚至像pcie srio等高速接口都调用了transceiver 所以了解并学会其使用方法还是很重要的 本文结合作者的使用经验 让你快速的了解并上手使用 Xilinx提供了Transceivers
  • (Scikit-Learn)朴素贝叶斯使用方法:高斯朴素贝叶斯 多项式朴素贝叶斯(文本分类)

    在贝叶斯分类中 我们希望确定一个具有某些特征的样本属于某类标签的概率 通常记为 P L 特征 贝叶斯定理告诉我们 可以直接用下面的公式计算这个概率 假如需要确定两种标签 定义为 L1 和 L2 一种方法就是计算这两个标签的后验概率的比值 其