pgmpy--Bayesian Model初步学习
pgmpy--Bayesian Model初步学习
- 前言
- 案例
- 案例概述
- 案例1--已知结构、已知参数
- 案例2--已知结构、未知参数
前言
贝叶斯网络又称信度网络,是Bayes方法的扩展,是目前不确定知识表达和推理领域最有效的理论模型之一。编写本文的此刻,作者刚刚入门贝叶斯网络,希望通过以下例子对贝叶斯网进行初步入门,与大家共同进步。代码及范例来源为:
PGM—pgmpy学习
pgmpy官网
案例
案例概述
下面展示两种应用情形,由浅入深,逐步了解并应用贝叶斯网络。
案例1–已知结构、已知参数
针对已知结构及参数,先采用BayesianModel构造贝叶斯网结构,然后通过TabularCPD构造条件概率分布CPD(condition probability distribution)表格,最后将CPD数据添加到贝叶斯网络结构中,完成贝叶斯网络的构造。这里主要用到两个函数:BayesianModel及TabularCPD,通过一下代码可以查询其详细的输入及用法,这里就不详述了。
BayesianModel?
TabularCPD?
具体代码如下:
#coding: utf-8from pgmpy.models import BayesianModel
from pgmpy.factors.discrete import TabularCPDcancer_model = BayesianModel([('pollution', 'cancer'),('smoker', 'cancer'),('cancer', 'x-ray'),('cancer', 'dyspnoea')])
cpd_pollution = TabularCPD(variable='pollution', variable_card=2, values=[[0.9],[0.1]])
cpd_smoker = TabularCPD(variable='smoker', variable_card=2, values=[[0.3],[0.7]])
cpd_cancer = TabularCPD(variable='cancer', variable_card=2, values=[[0.03, 0.05, 0.001, 0.02], [0.97, 0.95, 0.999, 0.98]], evidence=['smoker', 'pollution'],evidence_card=[2, 2])
cpd_x_ray = TabularCPD(variable='x-ray', variable_card=2,values=[[0.9, 0.2], [0.1, 0.8]],evidence=['cancer'],evidence_card=[2])
cpd_dyspnoea = TabularCPD(variable='dyspnoea',variable_card=2,values = [[0.65, 0.3],[0.35, 0.7]],evidence=['cancer'],evidence_card=[2])
cancer_model.add_cpds(cpd_pollution, cpd_smoker, cpd_cancer, cpd_x_ray, cpd_dyspnoea)
构造完成贝叶斯网络后,如何进行预测呢?有以下两种方式:
1.直接获取结果–predict
import pandas
A = pd.DataFrame(data=[[1, 1, 1, 1]], columns=['pollution', 'smoker', 'x-ray', 'dyspnoea'])
result = cancer_model.predict(A)
2.获取概率值–predict_probability
经过多次调试,在这种CPD构造贝叶斯网络中,采用predict_probability方式会报错,具体错误原因未知,往路过的大神指点。
案例2–已知结构、未知参数
针对已知结构,未知参数,可以先建立Beyasian网结构,然后将样本导入训练。
import numpy as np
import pandas as pd
from pgmpy.models import BayesianModel
values = pd.DataFrame(np.random.randint(low=0, high=2, size=(100, 5)), columns=['A', 'B', 'C', 'D', 'E'])train_data = values[:80]
predict_data = values[80:]
model = BayesianModel([('A', 'B'), ('C', 'B'), ('C', 'D'), ('B', 'E')])
model.fit(values)
构造训练完成贝叶斯网络后,可以直接采用例子1中两种方式进行预测。
pgmpy--Bayesian Model初步学习相关推荐
- 用Python对CAPM和Fama French Three Factor model的初步学习
用Python对CAPM和Fama French Three Factor model的初步学习 概述 介绍 建模与分析 CAPM Fama French Three-Factor Model 总结 ...
- eclipsevue代码怎么运行_[Java教程]使用eclipse初步学习vue.js操作
[Java教程]使用eclipse初步学习vue.js操作 0 2017-11-26 19:00:06 一.vue.js的初步认识 https://unpkg.com/vue ">vu ...
- 【TensorFlow-serving】初步学习模型部署
前言 初步学习tensorflow serving的手写数字识别模型部署.包括简单的模型训练.保存.部署上线.因为对docker和网络不太熟悉,可能会有部分错误,但是看完博客,能跑通整个流程.此博客将 ...
- 显著性检测论文解析2——Visual Saliency Detection Based on Bayesian Model, Yulin Xie, ICIP2011
最近感觉玩的差不多了,现在准备好好学习了,所以就又开始随便写点,就当是自己学习的笔记.这次要说的的是卢湖川的Visual Saliency Detection Based on Bayesian Mo ...
- HTMLParser的初步学习
Python的自带模块--HTMLParser的初步学习 HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. ...
- 贝叶斯理论与朴素贝叶斯分类理论(Naive Bayesian Model,NBM)
贝叶斯理论与朴素贝叶斯分类理论(Naive Bayesian Model,NBM) 贝叶斯统计理论是英国数学家托马斯´贝叶斯于18世纪中叶提出并逐步完善的一种数学理论.基于贝叶斯统计理论的贝叶斯决策是 ...
- 初步学习pg_control文件之三
接前文,初步学习pg_control文件之二 继续学习: 研究 DBState,先研究 DB_IN_PRODUCTION ,看它如何出现: 它出现在启动Postmaster时运行的函数处: /* * ...
- json2.js的初步学习与了解(转)
转载来源:http://apps.hi.baidu.com/share/detail/6092406 json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org ...
- 初步学习pg_control文件之八
接前文 初步学习pg_control文件之七 继续 看:catalog_version_no 代码如下: static void WriteControlFile(void) {.../** In ...
最新文章
- “死”在拥挤赛道上的快递员工
- (七)boost库之单例类
- c# ef报错_C# EF调用MySql出现“未将对象引用设置到对象的实例”错误解决方案
- 公众平台小程序文档和工具
- BOOTSTRAP ---- 重要部分
- php判断简写,怎么简写php 中的三元运算符
- 最近病毒缠身,帖两个病毒的解决方法.
- 对计算机进行培训内容,对计算机培训的心得体会
- 微信打飞机项目前期心得
- 鸡汤_产品经理职责概要
- 已解决IndexError: list index out of range
- 华清远见22071作业端口指令实现灯点亮
- 银行客户画像搭建与应用
- anemometer mysql_使用Anemometer基于pt-query-digest将MySQL慢查询可视化
- js中的运算符操作顺序
- 浏览器伪装成linux,Firefox修改UserAgent伪装成手机浏览器
- 通过BPE解决OOV问题----Neural machine Translation of Rare Words with Subword Units
- java开发——什么时候使用枚举类型?为什么要用枚举类型?
- Jetson Xavier NX刷机安装Ubuntu20.04,配置CUDA,cuDNN,Pytorch等环境教程(英伟达官方源安装,理论适用其它Jetson设备)
- IIS上面怎么开ShopEx伪静态
热门文章
- 热电链条式炉排热水锅炉项目DCS组态方案
- ZYNQFPGA 串口通信原理
- python pip安装第三方库老是报错_Python使用pip安装第三方库时报错的解决方案
- 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
- 盘点27个机器学习、深度学习库最频繁使用的 Python 工具包(内含大量示例,建议收藏)
- 光流分析 Optical Flow Lucas-Kanade 算法 DOF Dense Optical Flow
- 二本毕业,银行外包测试工作 4 个月有余。浅谈一下我的真实感受...
- MySQL数据库 高级命令的使用与讲解
- 终极版解决OneNote无法跳转链接:您的组织策略阻止我们为您完成此操作
- Houdini 17正确安装方法