朴素贝叶斯基本原理sklearn实现

理论

先验概率:根据以往的分析经验得到的概率,先验概率不需要样本数据
后验概率:根据数据的特征进行分析
联合概率:几个事件同时发生的概率,P(瓜熟,瓜蒂脱落)

  1. 定义
    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。 而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法, 分类原理就是利用 ### 贝叶斯公式 ### 根据某特征的先验概率计算出其后验概率,然后选择具有最大后验概率作为该特征所属的类。
    贝叶斯公式:。。。。
    转化: ### p(类别|特征)=p(特征|类别)*p(类别)/p(特征) ###

    朴素贝叶斯:假设 ### 各个特征之间相互独立 ###

  2. 拉普拉斯平滑
    在某个分类下, 为防止训练集中某个特征值和某个类别未同时出现过,导致预测概率为0。 所以需要进行平滑处理 。当平滑系数为1时,为拉普拉斯平滑。

  3. sklearn中的朴素贝叶斯算法 api, 参考:https://zhuanlan.zhihu.com/p/366787872

在scikit-learn库,根据特征数据的先验分布不同,给我们提供了5种不同的朴素贝叶斯分类算法
(sklearn.naive_bayes: Naive Bayes模块),分别是伯努利朴素贝叶斯(BernoulliNB),类朴素贝叶斯(CategoricalNB),高斯朴素贝叶斯(GaussianNB)、多项式朴素贝叶斯(MultinomialNB)、补充朴素贝叶斯(ComplementNB) 。
  1. 朴素贝叶斯分类器适用于以下场景
    朴素贝叶斯分类器的应用场景非常广泛,只要能将问题转化为分类问题,且能够使用先验概率和条件概率来描述问题,都可以考虑使用朴素贝叶斯分类器。
1.文本分类:可以用于垃圾邮件过滤、新闻分类、情感分析等。
2.个性化推荐:可以用于基于用户历史数据进行推荐,如购物网站的商品推荐、音乐推荐等。
3.生物信息学:可以用于基因分类、蛋白质分类等。
4.医学诊断:可以用于疾病分类、药物疗效预测等。
5.图像识别:可以用于图像分类、人脸识别等
6.金融风险评估:可以用于信用评估、欺诈检测等。

实例


import numpy as np
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split# 导入数据集
digits = load_digits()X = digits.data
y = digits.target# 划分测试集和训练数据集,划分后,训练数据1257个样本,测试数据集540个样本
xtrain, xtest, ytrain, ytest = train_test_split(X, y, test_size=0.3, random_state=0)# 查看标签种类
np.unique(ytrain)# 实例化模型并且训练模型,其中fit()过程就是在计算概率的过程
gnb = GaussianNB().fit(xtrain, ytrain)# score()接口对于我们的分类型算法,返回预测的精确性,也就是accuracy,使用测试数据集测试
acc_score = gnb.score(xtest, ytest)# 返回所有样本对应的类别,这里的样本标签是用我们下面得到的概率中,
# 选取每一个样本中概率最大的作为此样本的标签
y_pred = gnb.predict(xtest)# 查看我们的概率结果
yprob = gnb.predict_proba(xtest)
# 可以看到,返回的结果是540*10的二维矩阵,其中应为分类有10个,所以一共返回10列概率
# 取其中概率最大的哪一个分类作为最后的分类结果,并且每一行的概率之和是1

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_moons, make_circles, make_classification
from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB, ComplementNBh = .02
# 模型的名字
names = ["Multinomial", "Gaussian", "Bernoulli", "Complement"]
# 创建我们的模型对象
classifiers = [MultinomialNB(), GaussianNB(), BernoulliNB(), ComplementNB()]
# 创建分类数据集
X, y = make_classification(n_features=2, n_redundant=0, n_informative=2,random_state=1, n_clusters_per_class=1)
# 月亮刑数据
rng = np.random.RandomState(2)
X += 2 * rng.uniform(size=X.shape)
linearly_separable = (X, y)datasets = [make_moons(noise=0.3, random_state=0),make_circles(noise=0.2, factor=0.5, random_state=1),linearly_separable]
# 创建画布
figure = plt.figure(figsize=(6, 9))
i = 1for ds_index, ds in enumerate(datasets):X, y = ds#     标准化数据集X = StandardScaler().fit_transform(X)X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random_state=42)#     对画布画网格线x1_min, x1_max = X[:, 0].min() - .5, X[:, 0].max() + .5x2_min, x2_max = X[:, 1].min() - .5, X[:, 1].max() + .5array1, array2 = np.meshgrid(np.arange(x1_min, x1_max, 0.2),np.arange(x2_min, x2_max, 0.2))cm = plt.cm.RdBucm_bright = ListedColormap(['#FF0000', '#0000FF'])ax = plt.subplot(len(datasets), 2, i)if ds_index == 0:ax.set_title("Input data")ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train,cmap=cm_bright, edgecolors='k')ax.scatter(X_test[:, 0], X_test[:, 1], c=y_test,cmap=cm_bright, alpha=0.6, edgecolors='k')ax.set_xlim(array1.min(), array1.max())ax.set_ylim(array2.min(), array2.max())ax.set_xticks(())ax.set_yticks(())i += 1ax = plt.subplot(len(datasets), 2, i)clf = GaussianNB().fit(X_train, y_train)score = clf.score(X_test, y_test)Z = clf.predict_proba(np.c_[array1.ravel(), array2.ravel()])[:, 1]Z = Z.reshape(array1.shape)ax.contourf(array1, array2, Z, cmap=cm, alpha=.8)ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_bright,edgecolors='k')ax.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_bright,edgecolors='k', alpha=0.6)ax.set_xlim(array1.min(), array1.max())ax.set_ylim(array2.min(), array2.max())ax.set_xticks(())ax.set_yticks(())if ds_index == 0:ax.set_title("Gaussian Bayes")ax.text(array1.max() - .3, array2.min() + .3, ('{:.1f}%'.format(score * 100)),size=15, horizontalalignment='right')i += 1
plt.tight_layout()
plt.show()

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

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

相关文章

江大白 | 万字长文,算法工程师的深度经验总结!(建议阅读收藏!)

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。 原文链接:万字长文,算法工程师的深度经验总结! 以下文章来源于知乎:机智的叉烧 链接:https://zhuanlan…

【Spring高级】第3讲 Bean的生命周期

目录 基本的生命周期后处理器总结 基本的生命周期 为了演示生命周期的过程,我们直接使用 SpringApplication.run()方法,他会直接诶返回一个容器对象。 import org.springframework.boot.SpringApplication; import org.springframework.context.Config…

JAVA实战开源项目:智能停车场管理系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

opengl 学习(三)-----纹理

纹理就是贴图 分类前提demo效果解析 分类 前提 需要使用一个库来处理图片&#xff1a;#include <stb_image.h> https://github.com/nothings/stb 你下载好了之后&#xff0c;把目目录包含了就好 然后再引入 #define STB_IMAGE_IMPLEMENTATION #include "stb_i…

QEMU源码全解析 —— virtio(27)

接前一篇文章: 上一回解析了setup_vq函数的前3步,本回继续解析余下的步骤。为了便于理解和加深印象,再次贴出setup_vq函数的源码,在Linux内核源码/drivers/virtio/virtio_pci_modern.c中,代码如下: static struct virtqueue *setup_vq(struct virtio_pci_device *vp_dev…

git删除comimit提交的记录

文章目录 本地的删除远程同步修改上次提交更多详情阅读 本地的删除 例如我的提交历史如下 commit 58211e7a5da5e74171e90d8b90b2f00881a48d3a Author: test <test36nu.com> Date: Fri Sep 22 20:55:38 2017 0800add d.txtcommit 0fb295fe0e0276f0c81df61c4fd853b7a00…

基于java的企业设备管理系统设计与实现

1、引言 设计结课作业,课程设计无处下手&#xff0c;网页要求的总数量太多&#xff1f;没有合适的模板&#xff1f;数据库&#xff0c;java&#xff0c;python&#xff0c;vue&#xff0c;html作业复杂工程量过大&#xff1f;毕设毫无头绪等等一系列问题。你想要解决的问题&am…

【c++】运算符重载【基本、左移、递增】

1. 基本运算符重载 这里以加法运算符重载为例&#xff0c;减法乘法除法等基本运算符重载原理是一样的。 比如我们想实现Person类中的两个实例化变量p1和p2中对应变量的相加操作&#xff0c;我们需要对加法运算符进行重载。 类的定义如下&#xff1a; class Person { public:i…

Maya人物建模

【MAYA人物建模】超详细讲解人物嘴巴、鼻子、眼睛、耳朵、头发、帽子等布线细节&#xff0c;零基础人物头部布线教程_哔哩哔哩_bilibili 原始图像凑合用&#xff0c;视屏中截图 图像导入过程技巧总结 前视图/右视图模式下导入图形 创建图层 锁定后可以避免图片位置的移动 前视…

Python学习日记之学习turtle库(上 篇)

一、初步认识turtle库 turtle 库是 Python 语言中一个很流行的绘制图像的函数库&#xff0c;想象一个小乌龟&#xff0c;在一个横 轴为 x、纵轴为 y 的坐标系原点&#xff0c;(0,0)位置开始&#xff0c;它根据一组函数指令的控制&#xff0c;在这个平面 坐标系中移动&#xff0…

基于华为atlas的unet分割模型探索

Unet模型使用官方基于kaggle Carvana Image Masking Challenge数据集训练的模型。 模型输入为572*572*3&#xff0c;输出为572*572*2。分割目标分别为&#xff0c;0&#xff1a;背景&#xff0c;1&#xff1a;汽车。 Pytorch的pth模型转化onnx模型&#xff1a; import torchf…

探索Web中的颜色选择:不同取色方法的实现

在Web开发中&#xff0c;提供用户选择颜色的功能是很常见的需求。无论是为了个性化UI主题&#xff0c;还是为了图像编辑工具&#xff0c;一个直观且易用的取色器都是必不可少的。本文将介绍几种在Web应用中实现取色功能的方法&#xff0c;从简单的HTML输入到利用现代API的高级技…

计算机设计大赛 深度学习的动物识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

蓝桥杯2023年-平方差(数学)

题目描述 给定 L, R&#xff0c;问 L ≤ x ≤ R 中有多少个数 x 满足存在整数 y,z 使得 x y2 − z2。 思路 首先想到&#xff1a;x-y(xy)(x-y)&#xff0c;首先如果是奇数2*n1&#xff0c;肯定可以分成(n1n)*(n1-n)的形式&#xff0c;所以奇数是肯定可行的&#xff0c;然后…

面试中如何介绍zookeeper的ZAB协议

解释 ZAB 协议的基本概念&#xff1a;简单介绍 ZAB 协议的全称&#xff08;Zookeeper Atomic Broadcast&#xff09;以及它在 Zookeeper 中的作用&#xff0c;即确保分布式系统中的数据一致性和原子性。强调 ZAB 协议的核心目标&#xff1a;说明 ZAB 协议的主要目标是实现分布式…

Linux中PATH、LIBRARY_PATH、LD_LIBRARY_PATH的作用

1、PATH PATH是存储可执行文件搜索路径的系统环境变量&#xff0c;它包含了一组由冒号 : 分隔的目录列表。当运行一个命令时&#xff0c;操作系统会在这些目录中查找相应的可执行文件&#xff0c;并在找到后执行它。 例如&#xff0c;在命令行中执行ls命令时&#xff0c;就会依…

掌握Java建造者模式:逐步构建复杂对象的艺术与实践

建造者模式的主要目的是将一个复杂对象的构建过程封装起来&#xff0c;使得客户端代码不需要知道对象创建的细节。这种模式特别适用于那些具有多个组成部分、创建过程复杂、对象属性多且大多数属性可选的场合。 在Java中&#xff0c;建造者模式通常涉及以下几个角色&#xff1…

Android Studio Iguana | 2023.2.1版本

Android Gradle 插件和 Android Studio 兼容性 Android Studio 构建系统基于 Gradle&#xff0c;并且 Android Gradle 插件 (AGP) 添加了一些特定于构建 Android 应用程序的功能。下表列出了每个版本的 Android Studio 所需的 AGP 版本。 如果特定版本的 Android Studio 不支持…

如何将MathType嵌入到word中 word打开MathType显示错误

当我们编辑好mathtype公式以后&#xff0c;有时候需要将这个公式导入到word中&#xff0c;但是有不少用户们不清楚mathtype如何嵌入到word中。今天小编就给大家说明一下mathtype公式导入word的两种不同方法&#xff0c;有需要的用户们赶紧来看一下吧。 一、mathtype如何嵌入到…

C++流行的开源框架和库总结

目录 引言&#xff1a; 标准库 框架C通用框架和库 人工智能与机器人学习 异步事件循环 音视频多媒体 压缩压缩和归档库 并发性并发执行和多线程 容器 密码学 数据库&#xff0c;SQL服务器&#xff0c;ODBC驱动程序和工具 游戏引擎 图形与图像 国际化 Json 日志…