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初步学习相关推荐

  1. 用Python对CAPM和Fama French Three Factor model的初步学习

    用Python对CAPM和Fama French Three Factor model的初步学习 概述 介绍 建模与分析 CAPM Fama French Three-Factor Model 总结 ...

  2. eclipsevue代码怎么运行_[Java教程]使用eclipse初步学习vue.js操作

    [Java教程]使用eclipse初步学习vue.js操作 0 2017-11-26 19:00:06 一.vue.js的初步认识 https://unpkg.com/vue ">vu ...

  3. 【TensorFlow-serving】初步学习模型部署

    前言 初步学习tensorflow serving的手写数字识别模型部署.包括简单的模型训练.保存.部署上线.因为对docker和网络不太熟悉,可能会有部分错误,但是看完博客,能跑通整个流程.此博客将 ...

  4. 显著性检测论文解析2——Visual Saliency Detection Based on Bayesian Model, Yulin Xie, ICIP2011

    最近感觉玩的差不多了,现在准备好好学习了,所以就又开始随便写点,就当是自己学习的笔记.这次要说的的是卢湖川的Visual Saliency Detection Based on Bayesian Mo ...

  5. HTMLParser的初步学习

    Python的自带模块--HTMLParser的初步学习 HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. ...

  6. 贝叶斯理论与朴素贝叶斯分类理论(Naive Bayesian Model,NBM)

    贝叶斯理论与朴素贝叶斯分类理论(Naive Bayesian Model,NBM) 贝叶斯统计理论是英国数学家托马斯´贝叶斯于18世纪中叶提出并逐步完善的一种数学理论.基于贝叶斯统计理论的贝叶斯决策是 ...

  7. 初步学习pg_control文件之三

    接前文,初步学习pg_control文件之二 继续学习: 研究 DBState,先研究 DB_IN_PRODUCTION ,看它如何出现: 它出现在启动Postmaster时运行的函数处: /* * ...

  8. json2.js的初步学习与了解(转)

    转载来源:http://apps.hi.baidu.com/share/detail/6092406 json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org ...

  9. 初步学习pg_control文件之八

    接前文  初步学习pg_control文件之七  继续 看:catalog_version_no 代码如下: static void WriteControlFile(void) {.../** In ...

最新文章

  1. “死”在拥挤赛道上的快递员工
  2. (七)boost库之单例类
  3. c# ef报错_C# EF调用MySql出现“未将对象引用设置到对象的实例”错误解决方案
  4. 公众平台小程序文档和工具
  5. BOOTSTRAP ---- 重要部分
  6. php判断简写,怎么简写php 中的三元运算符
  7. 最近病毒缠身,帖两个病毒的解决方法.
  8. 对计算机进行培训内容,对计算机培训的心得体会
  9. 微信打飞机项目前期心得
  10. 鸡汤_产品经理职责概要
  11. 已解决IndexError: list index out of range
  12. 华清远见22071作业端口指令实现灯点亮
  13. 银行客户画像搭建与应用
  14. anemometer mysql_使用Anemometer基于pt-query-digest将MySQL慢查询可视化
  15. js中的运算符操作顺序
  16. 浏览器伪装成linux,Firefox修改UserAgent伪装成手机浏览器
  17. 通过BPE解决OOV问题----Neural machine Translation of Rare Words with Subword Units
  18. java开发——什么时候使用枚举类型?为什么要用枚举类型?
  19. Jetson Xavier NX刷机安装Ubuntu20.04,配置CUDA,cuDNN,Pytorch等环境教程(英伟达官方源安装,理论适用其它Jetson设备)
  20. IIS上面怎么开ShopEx伪静态

热门文章

  1. 热电链条式炉排热水锅炉项目DCS组态方案
  2. ZYNQFPGA 串口通信原理
  3. python pip安装第三方库老是报错_Python使用pip安装第三方库时报错的解决方案
  4. 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
  5. 盘点27个机器学习、深度学习库最频繁使用的 Python 工具包(内含大量示例,建议收藏)
  6. 光流分析 Optical Flow Lucas-Kanade 算法 DOF Dense Optical Flow
  7. 二本毕业,银行外包测试工作 4 个月有余。浅谈一下我的真实感受...
  8. MySQL数据库 高级命令的使用与讲解
  9. 终极版解决OneNote无法跳转链接:您的组织策略阻止我们为您完成此操作
  10. Houdini 17正确安装方法