机器学习(八):贝叶斯网络——福尔摩斯推理、草地喷水器推断

实验4 贝叶斯网络

一、 预备知识

二、 实验目的

  1. 掌握贝叶斯网络算法的原理及设计;

  2. 掌握利用贝叶斯网络算法解决推理分析。

三、 实验内容

福尔摩斯先生在办公室接到了他邻居华生的电话P(W=T)。华生告诉他:他的家里可能进了窃贼P(B=T),因为他家的警铃响了P(A=T)被告知有窃贼闯入,福尔摩斯迅速开车回家。在路上,他听广播家那里发生了地震。请问他应该回家抓贼还是迅速撤离该地区以躲避地震?

2.

1.计算草地是湿的情况下,下雨的概率?

2.草地是湿的情况下,自动喷水的概率?

四、 操作方法和实验步骤

问题 1:福尔摩斯推理

1.搭建模型

from pgmpy.models import BayesianNetwork
from pgmpy.factors.discrete import TabularCPD
from pgmpy.inference import VariableElimination
model = BayesianNetwork([('B', 'A'), ('E', 'A'), ('A', 'W'), ('E', 'R')])
cpd_1 = TabularCPD(variable='B', variable_card=2, values=[[0.9], [0.1]])
cpd_2 = TabularCPD(variable='E', variable_card=2, values=[[0.99], [0.01]])
cpd_A = TabularCPD(variable='A', variable_card=2,
                   values=[[0.99, 0.1, 0.1, 0.01],
                           [0.01, 0.9, 0.9, 0.99]],
                   evidence=['E', 'B'],#父节点
                   evidence_card=[2, 2])#警铃
cpd_W = TabularCPD(variable='W', variable_card=2,
                   values=[[0.99, 0.35],
                           [0.01, 0.65]],
                   evidence=['A'],#父节点
                   evidence_card=[2])#华生致电福尔摩斯
cpd_R = TabularCPD(variable='R', variable_card=2,
                     values=[[0.999, 0.01],
                            [0.001, 0.99]],
                     evidence=['E'],#父节点
                     evidence_card=[2])#广播播报地震
model.add_cpds(cpd_1, cpd_2, cpd_A, cpd_W, cpd_R)
infer = VariableElimination(model)
print(infer.query(variables=['B'],evidence={'A':1}))
print(infer.query(variables=['E'],evidence={'A':1,'R':1}))
print(infer.query(variables=['B'],evidence={'A':1,'R':1}))

2.计算概率

img

img

问题2:草地喷水器推理

1.搭建模型

model = BayesianNetwork([('R', 'S'), ('R', 'G'), ('S', 'G')])
cpd_1 = TabularCPD(variable='R', variable_card=2, values=[[0.8], [0.2]])
cpd_S = TabularCPD(variable='S', variable_card=2,
                   values=[[0.6, 0.99],
                           [0.4, 0.01]],
                   evidence=['R'],#父节点
                   evidence_card=[2])
cpd_G = TabularCPD(variable='G', variable_card=2,
                   values=[[1.0, 0.2, 0.1, 0.01],
                           [0.0, 0.8, 0.9, 0.99]],
                   evidence=['S', 'R'],#父节点
                   evidence_card=[2, 2])#警铃
                   
model.add_cpds(cpd_1, cpd_S, cpd_G)
infer = VariableElimination(model)
print(infer.query(variables=['R'],evidence={'G':1}))

print(infer.query(variables=['S'],evidence={'G':1}))

2.计算概率

img

img

五、实验结果和分析

问题1:福尔摩斯推理

(1)警铃A响了,那么窃贼入室B的概率是84.12%

(2)之后再路上听广播说发生了地震,那么发生地震的概率是98.92%,是窃贼入室的概率是11.75%

问题2:草地喷水器推理

(1)草地是湿的情况下,下雨的概率是35.77%

(2)草地是湿的情况下,自动喷水的概率64.67%

本文转载于网络 如有侵权请联系删除

相关文章

  • CVPR2022论文速递(2022.6.29)!共5篇!

    整理:AI算法与图像处理CVPR2022论文和代码整理:https://github.com/DWCTOD/CVPR2022-Papers-with-Code-Demo大家好,最近正在优化每周分享的CVPR论文,目前考虑按照不同类别去分类,方便不同方向的小伙伴挑选自己感兴趣的论文哈欢迎大家留言其他想法,合适的话会采纳哈!CVPR2022|Deblur-NeRF运动模糊输入也能恢复清晰结果最新论文整理:Updatedon:29Jun2022totalnumber:5TheThirdPlaceSolutionforCVPR2022AVAAccessibilityVisionandAutonomyChallenge论文/Paper:http://arxiv.org/pdf/2206.13718代码/Code:NoneTowardsGlobal-ScaleCrowd+AITechniquestoMapandAssessSidewalksforPeoplewithDisabilities论文/Paper:http://arxiv.org/pdf/2206.13677代码/Code:NoneFea

  • 鄂维南院士:AI for Science,一场发生在当下的科技革命

    机器之心报道作者:闻菲作为柯朗学派出身的应用数学家,鄂维南院士并没有纠结是数据的力量还是算法的力量,也没有囿于公式或定理,他一开始看到的,便是机器学习算法、数据、物理建模和高性能计算结合的力量,以及由此开拓的新的科学疆域。对学者而言,受邀在学术顶会上发表报告,通常是比论文获奖来得更高的荣誉。就像奥运会一样,取得参赛资格也即接到邀请本身就是实力的证明,而在强者云集的舞台上发表主旨演讲(KeynoteSpeech)、特邀报告(InvitedTalk)乃至全体特邀报告(PlenaryTalk),更是充分表明了受邀人的学术地位和影响力,以及同行对其工作和成果的普遍关注与认可。2022年7月,北京大学国际机器学习研究中心主任、数学科学学院教授、中国科学院院士鄂维南,在四年一度的国际数学家大会(ICM)上发表了一小时的大会全体特邀报告《从数学视角看机器学习》(AMathematicalPerspectiveonMachineLearning),在随后召开的国际机器学习大会(ICML2022)上,又作了开场的特邀报告《迈向机器学习的数学理论》(TowardsaMathematicalTheoryof

  • udp端口转发 Linux,Linux iptables 端口转发[通俗易懂]

    大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说udp端口转发Linux,Linuxiptables端口转发[通俗易懂],希望能够帮助大家进步!!!准备:1,UDP端口范围映射2,tcp端口范围映射3,本机端口转发4,单个端口转发打开转发[root@CentOS~]#cat/etc/sysctl.conf|grepnet.ipv4.ip_forwardnet.ipv4.ip_forward=1清空规则,修改默认策略,重要数据请备份[root@CentOS~]#iptables-F-tnat[root@CentOS~]#iptables-X-tnat[root@CentOS~]#iptables-PINPUTDROP[root@CentOS~]#iptables-L-tnatChainPREROUTING(policyACCEPT)targetprotoptsourcedestinationChainPOSTROUTING(policyACCEPT)targetprotoptsourcedestinationChainOUTPUT(policyACCEPT)targetproto

  • Cypress系列(90)- Cypress.Cookies 命令详解以及如何跨测试用例共享 Cookies

    如果想从头学起Cypress,可以看下面的系列文章哦https://www.cnblogs.com/poloyy/category/1768839.htmlCypress.Cookies共有三个命令Cypress.Cookies.debug(enable,options) Cypress.Cookies.preserveOnce(names...) Cypress.Cookies.defaults(options)复制Cypress.Cookies.debug(enable,options)作用是否启用Cookie调试功能更加易于了解Cypress是如何操作Cookie的参数讲解enabletrue:启用,默认,启用后在开发者工具(F12)的Console中可以看到详细的Cookie操作日志false:不启用,Console不会显示Cookie操作日志optionsverbose:是否详细打印Cookie操作日志,默认true栗子一代码运行结果(Console)能看到设置和清除Cookie都有详细的操作日志栗子二代码运行结果(Console)只显示Cookie名称,不会显示Cook

  • OC基础--数据类型与表达式

    前言做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱。所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础、UI控件、多线程、动画、网络、数据持久化、自动布局、第三方框架等几个模块进行梳理。本系列的所有博文集合参见:iOS开发知识梳理博文集。本文主要介绍OC基础--数据类型与表达式。一数据类型Objective-C是在C语言基础上拓展出的新语言,所以它是完全兼容C语言代码的,C语言中的基本数据类型如int、float、double和char在Objective-C中是完全可以正常使用的。除此之外,Objective-C还拓展了一些新的数据类型如BOOL、id、instancetype等。1.1基本数据类型因为Objective-C是在C语言基础上拓展出的新语言,所以它是完全兼容C语言代码的,C语言中的基本数据类型都可以正常使用,直接来自C语言中的数据类型如下所示。当然,这些数据类型我们在实际开发过程中很少用到(枚举类型有时候会用到)。#import<Foundation/Foundation.h&

  • 轻量应用服务器全网最低价!不限新老!

    云煮鸡终于要和大家见面了激动、紧张、更多的是兴奋8月13日19:00【腾讯云Lighthouse惊喜夜】初次见面,带了些鹅厂特产送给各位鸡仔蓝牙音响、腾讯公仔、限量按摩锤、限定笔记本······才华横溢的你们当然不满足于云煮鸡以上见面礼:Lighthouse全网最低价Lighthouse无门槛代金券甚至还有免单机会统统送给各位鸡仔老用户们的心声我们都有接收到呢~这次,我们带着全网最低价兑现承诺来了!本次直播间冰点价不限新老用户,一律同享!除此之外 云煮鸡还特意请来了腾讯云产品布道师卷爷现场挑战「3分钟建站」「性能跑分」满足各位鸡仔对腾讯云Lighthouse的所有好奇!长按识别下方海报二维码,预约Lighthouse直播?小彩蛋请在评论区告诉云煮鸡你在直播间最想看到的内容我们随机选择留言最精彩的五位鸡仔赠送鹅厂公仔更多惊喜8月13日19:00周四晚直播间不见不散!尖叫,贯穿于此夜;惊喜,不止于价格。

  • Spring Boot从零入门3_创建Hello World及项目剖析

    1前言上一篇我们讲述了Springboot的几个核心模块,知道了Springboot是如何减少组件依赖和简化繁杂的配置的,以及讲述了Springboot减少组件依赖和简化繁杂配置的内部原理,最后完成了Springboot的开发环境搭建。这一篇我们将讲述如何创建SpringbootHelloWorld级别的项目,创建一个简单的WEB应用,然后我们对这个项目层层剖析,让我们更深的了解Springboot是如何工作的。2名词术语名词术语释义CLI命令行界面,command-lineinterfaceMarvenApacheMaven是一个软件项目管理和综合工具,构建自动化系统(如Make,CMake)。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。Maven简化和标准化项目建设过程,处理编译,分配,文档,团队协作和其他任务的无缝连接。Maven增加可重用性并负责建立相关的任务;Marven拥有依赖管理功能,它通过简单的配置就可以自动从网络上下载项目所需的依赖POM项目对象模型(ProjectObjectModel),它是Maven项目中的文件,使用

  • 牛客寒假算法基础集训营4 I. Applese的回文串(思维)

    题目链接:https://ac.nowcoder.com/acm/contest/330/I    这道题首先比较好想的是n^2复杂度的算法,枚举每个添加的位置,然后依次插入字符,然后再判断是否回文,看似时间复杂度是n的算法,但实际上最坏的情况下,加上判断是否回文的操作的时间复杂度还是n^2的。所以我们就需要换一个思路,因为根据回文串的性质来说,肯定是第一位和最后一位相同,第二位和倒数第二位相同....所以说我们就根据这一个性质,两两比较,如果碰到了不相同的,就说明这里需要添加一个字符,然后我们就判断一下在左边插一个和右边字符相同的和右边插一个和左边字符相同的字符,判断这两个字符串能不能构成回文就好了,如果可以就说明只需要在当前位置插一个字符就能使其整个构成回文串,如果不行就说明在当前位置插入了一个字符后依旧不能构成回文串,所以就无解了,不用再继续往下查找了。AC代码:#include<bits/stdc++.h> usingnamespacestd; boolCheck(strings){ intlen=s.length(); for(inti=0,j=len-1;i&

  • docker学习系列13 实现 基于pxc 的mysql 多节点主主同步

    背景MySQL本身是开源的,有些公司或社区基于MySQL发布了新的分支,如有名的MariaDB。 在介绍Percona之前,首要要介绍的是XtraDB存储引擎,在MYSQL中接触比较多的是MyISAM和InnoDB这两个存储引擎。 MySQL4和5使用默认的MyISAM存储引擎安装每个表。从5.5开始,MySQL已将默认存储引擎从MyISAM更改为InnoDB。MyISAM没有提供事务支持,而InnoDB提供了事务支持。与MyISAM相比,InnoDB提供了许多细微的性能改进,并且在处理潜在的数据丢失时提供了更高的可靠性和安全性。 PerconaServer由领先的MySQL咨询公司Percona发布。PerconaServer是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB。PerconaXtraDBCluster完全兼容MySQL。常见MySQL集群方案 image.png PerconaXtraDBCluster优缺点优点如下: 1.当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需远程访问。 2.无需集

  • 本体李俊:区块链与信任社会 | 清华x-lab公开课

    清华区块链公开课又开讲啦!这一讲的嘉宾是分布科技联合创始人、本体项目创始人李俊。大数据文摘为不能来到现场的同学们带来了讲座实录,请大家来先睹为快吧!区块链系列公开课由清华x-lab及校研团委创新创业中心联合打造,面向清华大学全体学生、教师、校友。戳链接回顾之前课程内容:IBM任常锐:让区块链真正为商业所用|清华x-lab公开课NodeCapital王明远:区块链为什么能改变世界|清华x-lab公开课火币袁煜明:区块链的本质、意义与商业体系设计|清华x-lab公开课斯坦福大学终身教授张首晟:InMathWeTrust|清华x-lab公开课中国人民大学法学院副院长杨东教授:区块链的监管与法律政策|清华x-lab公开课中诚信征信姚明、PTS张佳辰:区块链,信用科技与普惠金融的最强引擎|清华x-lab公开课区块链的几层含义大家晚上好,非常高兴到清华来做汇报和分享。我是技术出身,也在金融行业工作多年,对区块链,特别是公有链方面的设计架构和技术有一些积累。先谈一下对区块链理解的发展。2008年比特币出现之后,才有了区块链,但是那篇论文中没有提到过区块链这个词,随后出现了对区块链的各个方面的解读。《

  • 错过了比特币,2018入场太晚吗?Dr.X2018上半年top5数字货币精选

    2017年您是不是普天盖地的听见各种关于比特币的新闻?例如,四川,贵州某个地方屯了很多显卡在挖矿;津巴布韦政变比特币又在坐火箭;比特币迪拜买房;中国官方叫停境内的虚拟货币交易所,然而火币,okcoin纷纷搬到海外却更多人疯狂入场。是的,去年比特币累计增值超过13倍。是不是觉得好像自己错过了什么?其实,摩门币2017年累计翻了约25倍,莱特币近51倍,以太坊超过98倍,达世币约97倍,瑞波大概涨了360倍,是不是您又觉得好像错过了什么?加密数字货币和技术应用可以说还在起步阶段,这一切其实都才是刚刚开始。7x24小时无间断全球交易,越来越多的altcoin问世,上市。也许您听得最多的是bitcoin,但相对比发展时间以及媒体对它的曝光和解读,新晋币种随着市场的成熟和发展有更大的潜力在短时间内实现巨幅增长。当然,币市似乎越来越像“比特币指数”看齐,山寨作为多元化资产配置策略,一方面可以以小搏大,也可以对冲风险,平衡损益。如果你不喜欢每天盯盘,上车下车,那么来看看Dr.X挑选的2018年上半年中长线top5altcoin吧!top5-SALT当下价格:$12.18路线图:-Q1,平台开发,以太

  • GitHub 和 Gitee 开源免费 10 个超赞后台管理面板,看完惊呆了!

      软件工程师在实际项目开发中不可避免需要依赖一些前后端的后台管理系统框架,而不是从零开始一点点的搭建,浪费人力。目前市面上有很多开放源码、且免费的后台管理面板,样式色彩也比较丰富美观。   今天整理了一下GitHub和Gitee上比较优秀的后台管理面板,这些后台管理面板有的是包含前后端代码有的是UI框架含前端代码,都支持Git命令下载编译,运行即可正常访问。 1、vue-Element-Admin   简介:vue-element-admin是一个后台前端解决方案,它基于vue和element-ui实现。它使用了最新的前端技术栈,内置了i18n国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。 点击下载链接 2、JingXuan-Vue-Admin   简介:用户权限管理系统是采用SpringBoot+SpringSecurity+JWT作为后端框架,Vue+Element作为前端框架的前后端分离架构开源项目,代码易懂易上手、界面风格简约大气。其中核心技术是基于Spring、MyBatis等没有任何其它过度依赖

  • 结构化数据上的 TopN 运算

    1.    最大值/最小值 最大值/最小值可以理解为TopN查询中,N等于1时的情况,因为很常用所以单独拿出来讲一下。取最大值/最小值是很常见的需求,例如一班数学最高分是多少,员工年龄最小的是几岁等等。但是有时候我们并不关心具体的值,而是关心最大值/最小值出现的位置,这种需求常用于跨行计算。例如公司销售额最高的那个月比上个月的销售额增加了多少?此时我们需要知道销售额最高月份所在记录的行号,再取出上个月的销售额与之比较。还有时候我们关心的是最大值/最小值所在记录的详细信息。例如取一班数学最高分的同学姓名,公司年龄最小的员工在哪个部门等等。 本节将从以上三种情况来讲解如何处理最大值/最小值的各种情况。以纳斯达克指数为例,部分数据如下: Date Open Close Volume 2019/01/02 6506.910156 6665.939941 2261800000 2019/01/03 6584.77002 6463.5 2607290000 2019/01/04 6567.140137 6738.859863 2579550

  • golang 获取当前执行程序的路径。

    golang可以使用下面的函数获取当前执行程序的路径。   funcgetCurrentPath()string{ ifex,err:=os.Executable();err==nil{ returnfilepath.Dir(ex) } return"./" }复制  

  • 关于BFC不会被浮动元素遮盖的一些解释

    简介            在清除浮动一文中提到BFC不会被浮动元素遮盖,并没有详细探究表现行为。规范中指出,在同一个BFC内,作为子元素的BFC的border-box不应该覆盖同为子元素的浮动元素的margin-box。其实,浏览器在内部通过隐式的给子BFC设置margin值来防止覆盖。 例证           创建两个浮动元素和一个BFC,然后改变BFC的margin值和浮动元素的margin值,观察它们的位置。 .f1r{ background:skyBlue; float:left; width:200px; } .f2{ background:yellow; float:right; width:200px; } ..bfc{ background:pink; overflow:hidden; zoom:1; border:5pxsolidteal; }复制 &n

  • 使用SUN提供的Double.doubleToLongBits()方法

    https://www.cnblogs.com/qq1445496485/p/15895620.html

  • Jetbrains软件放大字体,调节字体 --Pycharm,RubyMine等

    上面有个设置的图标 点击后进入Setting 左边下面的IDESettings-》Editor-》Colors&Fonts 这里先要save一个自己的schema。点击一个自己想要的参照schema,比如default,然后saveschema,取个名字。 之后编辑的都会自己的schema。 再点击左边Colors&Fonts里的Font,就可以编辑字体了。因为软件本身的schema不允许编辑,但自己的schema是可以编辑的。    

  • iOS crash 异常捕获

    // // UncaughtExceptionHandler.m // UncaughtExceptions // // CreatedbyMattGallagheron2010/05/25. // Copyright2010MattGallagher.Allrightsreserved. // // Permissionisgiventousethissourcecodefile,freeofcharge,inany // project,commercialorotherwise,entirelyatyourrisk,withthecondition // thatanyredistribution(inpartorwhole)ofsourcecodemustretain // thiscopyrightandpermissionnotice.Attributionincompiledprojectsis // appreciatedbutnotrequired. //   #imp

  • Django Form组件 基于源码的扩展

    1、自定义方法,验证单独某个字段 classAjaxForm(forms.Form):username=fields.CharField()user_id=fields.IntegerField(widget=(widgets.Select(choices=[(0,'张三'),(1,'李四'),(2,'王五'),])))    #通过源码可得,当字段通过正则验证后,会执行clean_字段名的方法,并返回self.cleaned_data[字段名]  #我们可以自行定义此方法,扩展form组件,以下代码,与源码执行流程一致,只是我们重新定义了  #defclean_username(self):      #  returnself.cleaned_data['username']  #必须有返回值  #  #defclean_user_id(self):  #  returnself.cleaned_data['user_id']  #开始扩展,当用户名通过验证后再去验证数据库中是否有相同的用户名,如果有就发出错误信息    fromdjango.core.exceptionsimp

  • dart 基础知识查漏补缺

    一、基础类型 1.late关键字 有两种用法: 第一种是告知编译器该变量在使用前会执行初始化。因为dart编译器要求非空变量必须在初始化后才能使用: lateStringdescription; voidmain(){ description='Feijoada!'; print(description); } 复制 第二种是惰性赋值(类似scala中的lazy),在使用前才进行初始化求值: //在使用变量temperature的时才真正执行readThermometer()方法。 lateStringtemperature=readThermometer(); 复制 结合final使用latefinal<variable>,可以保证变量只初始化一次。如用于实现单例模式: classSingleton{ Singleton._internal(); //命名构造函数,可调用它生成实例 factorySingleton()=>_instance; staticlatefinalSingleton_instance=Singleton._internal(); }

  • 2012-2013 Northwestern European Regional Contest (NWERC 2012)

    地址 Rank Solved A B C D E F G H I J K 16/160 7/11 O O . O O . Ø . O O O O:当场通过 Ø:赛后通过 .:尚未通过 AAdmiral solvedbychelly chelly'ssolution BBeerPressure solvedbychelly chelly'ssolution CCycling unsolved DDigitalClock unsolved EEdgeCase solvedbychelly chelly'ssolution FFoulPlay unsolved GGuards upsolvedbychelly chelly'ssolution 块内直接暴力二进制枚举,块间树dp HHipToBeSquare unsolved IIdol solvedbychelly chelly'ssolution JJointVenture solvedbychelly chelly'ssolution KKeyInsight solvedbychelly che

相关推荐

推荐阅读