贝叶斯网络实践

news2024/11/17 0:27:53

目录

一。朴素贝叶斯的假设 

二。朴素贝叶斯的推导 

三。高斯朴素贝叶斯Gaussian Naive Bayes

四。多项分布朴素贝叶斯Multinomial Naive Bayes 

五。以文本分类为例 

1.分析 

2.分解

3.拉普拉斯平滑 

4.对朴素贝叶斯的思考

六。总结

七。word2vec 

八。GaussianNB, MultinomialNB代码


一。朴素贝叶斯的假设 

一个特征出现的概率,与其他特征(条件)独立(特征独立性) 
其实是:对于给定分类的条件下,特征独立 
每个特征同等重要(特征均衡性) 

二。朴素贝叶斯的推导 

朴素贝叶斯(Naive Bayes,NB)是基于“特征之间是独立的”这一朴素假设,应用贝叶斯定理的监督学习算法。 

对于给定的特征向量,类别y的概率可以根据贝叶斯公式得到: 

使用朴素的独立性假设: 

 

在给定样本的前提下,是常数: 

三。高斯朴素贝叶斯Gaussian Naive Bayes

根据样本使用MAP(Maximum A Posteriori)估计      ,建立合理的模型估计            ,从而得到样本的类别。 

 

假设特征服从高斯分布,即:

 

参数使用MLE估计即可。  

四。多项分布朴素贝叶斯Multinomial Naive Bayes 

五。以文本分类为例 

样本:1000封邮件,每个邮件被标记为垃圾邮件或者非垃圾邮件 
分类目标:给定第1001封邮件,确定它是垃圾邮件还是非垃圾邮件 
方法:朴素贝叶斯  

1.分析 

类别c:垃圾邮件c1,非垃圾邮件c2 
词汇表,两种建立方法: 
        使用现成的单词词典; 
        将所有邮件中出现的单词都统计出来,得到词典。 
        记单词数目为N 
将每个邮件m映射成维度为N的向量x
        若单词wi在邮件m中出现过,则xi=1,否则,xi=0。即邮件的向量化:m(x1,x2……xN) 
贝叶斯公式:P(c|x)=P(x|c)*P(c)/P(x)

        P(c1|x)=P(x|c1)*P(c1)/P(x)
        P(c2|x)=P(x|c2)*P(c2) / P(x)

        注意这里x是向量 

2.分解

P(c|x)=P(x|c)*P(c) / P(x)

P(x|c)=P(x1,x2…xN|N|c)=P(x1|c)*P(x2|2|c)…P(xN|N|c)

        特征条件独立假设

P(x)=P(x1,x2…xN)N)=P(x1)*P(x2)…P(xN)N)

        特征独立假设

带入公式: P(c|x)=P(x|c)*P(c) / P(x)  

等式右侧各项的含义:

 

        P(xi):在所有样本中,单词xi出现的概率

        P(cj) :在所有样本中,邮件类别cj出现的概率 

3.拉普拉斯平滑 

4.对朴素贝叶斯的思考

拉普拉斯平滑能够避免0/0带来的算法异常 

要比较的是P(c1|x)和P(c2|x)的相对大小,而根据公式P(c|x)=P(x|c)*P(c)/P(x),二者的分母都是除以P(x),实践时可以不计算该系数。

编程的限制:小数乘积下溢出怎么办? 

问题:一个词在样本中出现多次,和一个词在样本中出现一次,形成的词向量相同 

        由0/1向量改成频数向量或TF-IDF向量 

如何判断两个文档的距离 

        夹角余弦 

如何给定合适的超参数

        交叉验证  

六。总结

在每个时刻,物体的当前可能区域是上一时刻所有可能区域和相应转移概率的乘积和,这恰好是矩阵乘法(矩阵和向量乘法)的定义。

当前可能区域只和上一个时刻的区域有关,而与更上一个时刻无关,因此,是马尔科夫模型。 

思考:可以使用“漂流位置”建立马尔科夫模型,该可能位置是不可观察的,而将“转移位置”认为是“漂流位置”的转换结果,“转移位置”是残骸的最终真实位置,使用增强的隐马尔科夫模型。

不要过多累加模型的复杂度,适时使用奥卡姆剃刀(Occam‘sRazor)。

七。word2vec 

Word2vec本质是建立了3层神经网络,将所有词都映射为一定长度(如200)的向量;取一定的窗口范围作为当前词的邻域,估计窗口内的词。 

        词潜入

八。GaussianNB, MultinomialNB代码

    priors = np.array((1,2,4), dtype=float)
    priors /= priors.sum()
    gnb = Pipeline([
        ('sc', StandardScaler()),#数据进行归一化和标准化
        ('poly', PolynomialFeatures(degree=1)),#多项式特征
        ('clf', GaussianNB(priors=priors))])    # 由于鸢尾花数据是样本均衡的,其实不需要设置先验值,高斯分布下的朴素贝叶斯
    # gnb = KNeighborsClassifier(n_neighbors=3).fit(x, y.ravel())
    gnb.fit(x, y.ravel())
    y_hat = gnb.predict(x)
    print ('训练集准确度: %.2f%%' % (100 * accuracy_score(y, y_hat)))
    y_test_hat = gnb.predict(x_test)
    print ('测试集准确度:%.2f%%' % (100 * accuracy_score(y_test, y_test_hat)))  # 画图

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

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

相关文章

【数据结构】Map 和 Set

目录二叉搜索树二叉搜索树---查找二叉搜索树---插入二叉搜索树---删除Map和SetMap的使用Set的使用哈希表哈希冲突冲突避免冲突解决冲突解决---闭散列冲突解决---开散列题目练习只出现一次的数复制带随机指针的链表宝石与石头旧键盘二叉搜索树 二叉搜索树也叫二叉排序树&#x…

(二十六)大白话如何从底层原理解决生产的Too many connections故障?

今天我们继续讲解昨天的那个案例背景,其实就是经典的Too many connections故障,他的核心就是linux的文件句柄限制,导致了MySQL的最大连接数被限制,那么今天来讲讲怎么解决这个问题。 其实核心就是一行命令: ulimit -H…

分布式面试题

目录 分布式id的生成方案有哪些 雪花算法生成的ID由哪些部分组成 分布式锁在项目中有哪些应用场景? 分布式锁有哪些解决方案 Redis做分布式锁用什么命令 Redis做分布式锁,死锁有哪些情况?如何解决 Redis如何做分布式锁 MySQL如何做分布式锁 什么…

代码签名即将迎来一波新关注

在数字化高度发展的当下,个人隐私及信息安全保护已经成了大家关注的重点,包括日常使用的电脑软件,手机APP等,由于包含了大量的用户信息,已经成了重点关注对象,任何一个疏忽就可能泄露大量用户信息。所以权威…

了解线程安全

线程安全是多线程的重点和难点。 线程安全概念 线程安全:在多线程的各种随机调度顺序下,代码没有bug,都能够符合预期的方式来执行,此时认为线程安全 线程不安全:如果在多线程随机调度下代码出现bug,此时…

Java Web:开篇综述与第一章

前言 翻开这本书,又是一段新的学习路线,在学习的道路上是枯燥的,是乏味的,难免有放弃的想法。但回看曾经的学习笔记,自己也一步一步走过来了,即使会自我怀疑自我否定,但不坚持不努力是永远没有…

#G. 求约数个数之六

我们先求到区间[1..b]之间的所有约数之和于是结果就等于 [1..b]之间的所有约数之和减去[1..a-1]之间的约数之和很明显这两个问题是同性质的问题,只是右端点不同罢了.明显对于1到N之间的数字,其约数范围也为1到N这个范围内。于是我们可以枚举约数L,当然这…

【ROS学习笔记1】ROS快速体验输出Hello World

【ROS学习笔记1】ROS快速体验输出Hello World 文章目录【ROS学习笔记1】ROS快速体验输出Hello World1.1 ROS快速体验1.1.1 Hello World快速实现简介1.1.2 Hello World的C实现1.1.3 Hello World的Python实现写在前面,本系列笔记参考的是AutoLabor的教程,具…

求职3个月,简历大多都石沉大海,一听是手工测试都纷纷摇头....太难了

距离被上家公司裁员已经过去了3个月了,3个月的求职经历真的让我痛不欲生,我也从中理解感叹到了很多,想写出来,告诫跟我一样的经历的人。 我今年26岁,大学是一所普通的大专,学的是机电专业,如何…

【Django】内建用户、文件上传、发送邮件、项目部署

一、内建用户系统 Django带有一个用户认证系统用来处理账号、cookie等 from django.contrib.auth.models import User1、创建用户 from django.contrib.auth.models import User # 普通用户 user User.objects.create_uer(username用户名,password密码,email邮箱) # 超级用…

这几个免费、商用图片素材网,你一定要知道

很多朋友不知道去哪里找图片素材,找到了又担心会不会侵权。 今天给大家分享7个免费可商用图片素材网站,这下再也不用担心找不到素材或侵权啦! 1、菜鸟图库 传送门:美女图片|手机壁纸|风景图片大全|高清图片素材下载网 - 菜鸟图库…

hive只复制表结构不复制表数据

目录 一、背景 二、准备测试数据 1.建表 2.造测试数据 三、操作 1.CTAS (1).无分区表测试 (2).分区表测试 2.LIKE (1).无分区表测试 (2).分区表测试 一、背景 有一张ori_…

《狂飙》壁纸大嫂如此惊艳,做成日历壁纸天天看

兄弟们,今年的反腐大剧狂飙都有看吗 ? 话说,名字虽然叫狂飙,但是全剧只有有田一个人在狂飙! 当然,有田虽然亮眼,但是毕竟是个糟老头子,正经人谁看有田啊,当然是看大嫂了…

【在 Colab 中使用 TensorBoard 绘图】

【在 Colab 中使用 TensorBoard 绘图】进入 Google Drive进入 Colab在深度学习中,使用本机GPU跑可能会比较慢,这里使用 Google Drive Colab 进行训练,运行代码 进入 Google Drive 进入网盘 初次进入需要注册账号。注意科学上网即可。右键…

路由器防火墙配置(14)

实验目的 通过本实验,理解路由器的防火墙工作原理,掌握路由器的防火墙功能配置方法,主要包括网络地址转换功能和数据包过滤功能的配置。 培养根据具体环境与实际需求进行网络地址转换及数据包过滤的能力。 预备知识网络地址转换 网络地址转…

SSIM学习

SSIM原文链接:https://www.researchgate.net/profile/Eero-Simoncelli/publication/3327793_Image_Quality_Assessment_From_Error_Visibility_to_Structural_Similarity/links/542173b20cf203f155c6bf1a/Image-Quality-Assessment-From-Error-Visibility-to-Struct…

Window 的 PHP XAMPP 安装 mongodb 的扩展

需要安装的扩展为:extensionphp_mongodb.dll根据官方的指引:PHP: Installing the MongoDB PHP Driver on Windows - Manual 1需要到 GitHub 上下载扩展,然后进行安装。这里的版本选择有些讲究。首先1.51 是 mongoDB 的驱动版本号,…

Bulletproofs++

1. 引言 前序博客: Bulletproofs: Short Proofs for Confidential Transactions and More学习笔记Bulletproofs 代码解析Bulletproofs: Shorter Proofs for Privacy-Enhanced Distributed Ledger学习笔记Bulletproofs 代码解析 Liam Eagen 2022年3月论文《Bullet…

canvas动画及案例

介绍 由于我们是用 JavaScript 去操控 对象,这样要实现一些交互动画也是相当容易的。 可能最大的限制就是图像一旦绘制出来,它就是一直保持那样了。如果需要移动它,我们不得不对所有东西(包括之前的)进行重绘。重绘是…

SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境

制作通用模块jar包 通用模块不是运行的&#xff0c;而且要被其他模块引入的&#xff0c;所以该模块不能采用springboot打包方式制作jar包&#xff0c;否则其他模块无法引入通用模块。 1、修改通用模块&#xff0c;设置模块为非Springboot项目 <?xml version"1.0&qu…