【机器学习】用可视化的方式直观理解Bayesian models

2023-10-29

如果你感觉Bayesian models反直觉,不好理解!
本期分享两个工具,利用可视化的直观方式探索贝叶斯模型


1、Python ArviZ

dca7fdd3d8086ad8ba40921ec843c103.png主要包含以下4方面功能:

  • 后验分析,posterior analysis

  • 数据存储,data storage

  • 样本诊断,sample diagnostics

  • 模型比较,model comparison

  • 模型检验,Model Checking

以下举例简单介绍,


后验分析,posterior analysis

可以基于matplotlib,

import matplotlib.pyplot as plt
# arviz底层可选matplotlib或者bokeh,此处选matplotlib
import arviz as az
plt.figure(dpi=150)
az.style.use("ggplot")  #类似matplotlib中的plt.style.use

#数据准备
data = az.load_arviz_data("centered_eight")
coords = {"school": ["Choate"]}

# plot_posterior
axes = az.plot_posterior(
    data,
    var_names=["mu", "theta"],
    coords=coords,
    rope=(-1, 1),
    figsize=(11.5, 5),
)

fig = axes.flatten()[0].get_figure()
fig.suptitle("Centered Eight: mu and theta for Choate")

plt.show()

65c21ac9e5484f28898414b2f873762d.png也可以基于Bokeh:Plotting with Bokeh

import arviz as az

data = az.load_arviz_data("centered_eight")

coords = {"school": ["Choate", "Mt. Hermon", "Deerfield"]}

#同样使用plot_posterior
ax = az.plot_posterior(
    data,
    var_names=["mu", "theta"],
    combine_dims={"school"},
    coords=coords,
    backend="bokeh",
)
78cb5346ab8bd43c852d9478aec240ba.png

样本诊断,sample diagnostics

import matplotlib.pyplot as plt
import arviz as az

data = az.load_arviz_data("centered_eight")

coords = {"school": ["Choate", "Deerfield"]}
az.plot_pair(
    data,
    var_names=["theta", "mu", "tau"],
    coords=coords,
    divergences=True,
    textsize=22,
)

plt.show()
b1eb6d4b0470809ac5f8e96e3854b9da.png

模型比较,model comparison

import arviz as az

centered_data = az.load_arviz_data("centered_eight")
non_centered_data = az.load_arviz_data("non_centered_eight")

axes = az.plot_density(
    [centered_data, non_centered_data],
    data_labels=["Centered", "Non-Centered"],
    var_names=["theta"],
    shade=0.2,
)

fig = axes.flatten()[0].get_figure()
fig.suptitle("94% High Density Intervals for Theta")

plt.show()
0ed00753943ee2064d83c44e4d20b1cd.png

模型检验,Model Checking

import matplotlib.pyplot as plt
import arviz as az

data = az.load_arviz_data("non_centered_eight")
az.plot_ppc(data, alpha=0.05, kind="cumulative", textsize=14)

plt.show()
e54bbed110c2aba4489b12afe14b4291.png

2、R bayesplot

主要利用可视化探索马尔科夫链蒙特卡洛方法MCMC拟合后的Bayesian modelsf07bad0d3ecca1297a476f52ec0860d8.png功能都在下图中了,892401bf1cc07db9926480d965b8ead6.png

 
 

-推荐阅读-

 
 

54111549ec5a4185b80d0a727123083f.jpeg

 
 
 
 
 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑机器学习交流qq群955171419,加入微信群请扫码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【机器学习】用可视化的方式直观理解Bayesian models 的相关文章

  • 如何访问pandas数据框中的多级索引?

    我想用相同的索引来调用这些行 这是示例数据框 arrays np array bar bar baz baz foo foo qux qux np array one two one two one two one two df pd Da
  • 在 Django 中定义视图和 url。为什么调用函数时不使用括号?

    我已经在经历 Python速成课程 目前正在进行 Django Web应用程序项目 学习日志 阶段 有些东西与我已经学到的相矛盾 views py file from django shortcuts import render def i
  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • 替换字符串列表中的 \x00 的最佳方法?

    我有一个来自已解析 PE 文件的值列表 其中包括 x00每个部分末尾的空字节 我希望能够删除 x00字符串中的字节而不删除所有字节 x 文件中的 s 我试过做 replace and re sub 但并没有取得太大成功 使用Python 2
  • Python 中 genfromtxt() 的可变列数?

    我有一个 txt具有不同长度的行的文件 每一行都是代表一条轨迹的一系列点 由于每条轨迹都有自己的长度 因此各行的长度都不同 也就是说 列数从一行到另一行不同 据我所知 genfromtxt Python 中的模块要求列数相同 gt gt g
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • Python:随时接受用户输入

    我正在创建一个可以做很多事情的单元 其中之一是计算机器的周期 虽然我将把它转移到梯形逻辑 CoDeSys 但我首先将我的想法放入 Python 中 我将进行计数 只需一个简单的操作 counter 1 print counter 跟踪我处于
  • 反加入熊猫

    我有两个表 我想附加它们 以便仅保留表 A 中的所有数据 并且仅在其键唯一时添加表 B 中的数据 键值在表 A 和 B 中是唯一的 但在某些情况下键将出现在表 A 和 B 中 我认为执行此操作的方法将涉及某种过滤联接 反联接 以获取表 B
  • Pandas:根据列名进行列的成对乘法

    我有以下数据框 gt gt gt df pd DataFrame ap1 X 1 2 3 4 as1 X 1 2 3 4 ap2 X 2 2 2 2 as2 X 3 3 3 3 gt gt gt df ap1 X as1 X ap2 X a
  • Python unicode 字符代码?

    有没有办法将 Unicode 字符 插入 Python 3 中的字符串 例如 gt gt gt import unicode gt gt gt string This is a full block s unicode charcode U
  • 使用循环将对象添加到列表(python)

    我正在尝试使用 while 循环将对象添加到列表中 基本上这就是我想做的 class x pass choice raw input pick what you want to do while choice 0 if choice 1 E
  • Python int 太大,无法放入 SQLite

    我收到错误 OverflowError Python int 太大 无法转换为 SQLite INTEGER 来自以下代码块 该文件约25GB 因此必须分部分读取 length 6128765 Works on partitions of
  • 如何逐像素绘制正方形(Python,PIL)

    在空白画布上 我想使用 Pillow 逐像素绘制一个正方形 我尝试使用 img putpixel 30 60 155 155 55 绘制一个像素 但它没有执行任何操作 from PIL import Image def newImg img
  • FastText - 由于 C++ 扩展未能分配内存,无法加载 model.bin

    我正在尝试使用 FastText Python APIhttps pypi python org pypi fasttext https pypi python org pypi fasttext虽然 据我所知 此 API 无法加载较新的
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • Plotly:如何避免巨大的 html 文件大小

    我有一个 3D 装箱模型 它使用绘图来绘制输出图 我注意到 绘制了 600 个项目 生成 html 文件需要很长时间 文件大小为 89M 这太疯狂了 我怀疑可能存在一些巨大的重复 或者是由单个项目的 add trace 方法引起的 阴谋 为
  • Python模块单元测试的最佳文件结构组织?

    遗憾的是 我发现有太多方法可以在 Python 中保存单元测试 而且它们通常没有很好的文档记录 我正在寻找一种 终极 结构 它可以满足以下大部分要求 be discoverable by test frameworks including
  • Google App Engine 中的自定义身份验证

    有谁知道或知道我可以在哪里学习如何使用 Python 和 Google App Engine 创建自定义身份验证流程 我不想使用 Google 帐户进行身份验证 并且希望能够创建自己的用户 如果不是专门针对 Google App Engin
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现

随机推荐

  • 超级好用的css属性——clip-path

    目录 基本概念 circle 函数 ellipse 函数 polygon 函数 path 函数 总结 clip path是CSS3中的一个属性 用于在元素上创建一个裁剪区域 以显示元素的一部分 它允许您选择性地显示元素的某个部分 而隐藏其他
  • 使用Nginx部署前后端分离项目并实现负载均衡

    1 打包后端项目 jar包 IDEA里执行package将后台工程打成jar包 上传至服务器 我将jar包上传至了target目录 cd至target目录 执行以下命令启动后台 表示后台运行 退出不会结束进程 root zy host ta
  • 【微信小程序】小程序模态框里面的问题换行问题

    写项目的时候使用到了小程序提供的模态框 但是文字换行问题一直有问题 设计稿 模态框 找了好久终于找到了一个可以实现换行的办法就是在你需要换行的添加 r n就可以了 下面来看下效果图 注释 还有一点在工具里面还是看不出来效果的 只有在真机上面
  • svn代码回滚命令

    svn代码回滚命令 取消对代码的修改分为两种情况 第一种情况 改动没有被提交 commit 这种情况下 使用svn revert就能取消之前的修改 svn revert用法如下 svn revert R something 其中someth
  • ubuntu 设置鼠标手势和鼠标灵敏度

    ubuntu设置鼠标触摸手势 首先确认你的触摸板是否支持多点操作以及你使用的用户是否有权限读取触摸板一般来说都没有问题 安装必要的包 自定义手势功能 让它开机启动 修改触摸板指针移动速度 1 ubuntu设置鼠标触摸手势 fusuma是gi
  • ffprobe -show_packets和-show_frames之间的区别

    一 show packets 我们只查看视频的packets ffprobe show packets rtmp jdpull jd com live 14042733 of xml grep video 结果如下
  • java中关于字符串相等的比较问题

    Java中比较两个字符串是否相等的问题 Java中 关于比较两个字符串是否相等的问题 经常会出现 下面将分析使用 注意 Java中 是赋值运算符 是比较是否相等 和 equals 方法 来比较两个字符串相等的区别 简单一句话 比较的是两个字
  • 1.8新特性——Stream流

    Stream 在Java1 8中 由于lambda表达式这种函数式编程 JDK引入了一个新概念stream流 用于解决已有集合类库的一些弊端 代码如下 public class Test10 public static void main
  • 逻辑学学习.4--- 命题逻辑(二):符号化

    一 命题的符号化 用人为规定的符号表示一个命题 命题举例 你干这些工作或者我干这项工作 J表示 你干这项工作 K表示 我干这项工作 或者 是联结词 表示合取 用 表示 符号化 J K 命题常项 用大写字母A到Z表示 命题常项表示命题的缩写
  • 基于elementUi,下拉分页组件封装

    文章目录 一 说明 二 组件封装 1 组件 PaginationSelect vue 代码 2 属性 3 事件 方法 三 组件引入 使用 注意 一 说明 虽然elementUi提供了丰富的组件 但是有些业务场景下 需要自己再封装适合自己的业
  • TensorFlow2.0学习笔记-5.数据构建

    5 数据构建 tf data简介 面对一堆格式不一的原始数据文件 读入程序的过程往往十分繁琐 运行的效率上不尽如人意 T e n so r F l ow 提供了 tf data 这一模块 包括了一套灵活的数据集构建 API 能够帮助我们快速
  • 学了 Python 能用来做什么?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 说起编程语言 Python 也许不是使用最广的 但一定是现在被谈论最多的 随着近年大数据 人工智能的兴起 Python 越来越多的出现在人们的视野中 那么人们在谈论 Pyt
  • 【自然语言处理】GPT 系列讲解

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 在阅读本篇之前建议先学习 自然语言处理 Seq2Seq 讲解 自然语言处理 Attention 讲解 自然语言处理 ELMo 讲解 自然语言处理 Transformer 讲解 GPT
  • Jupyter 配置工作目录与虚拟环境解释器

    目录 一 Jupyter 配置工作目录 第一步 首先 我们输入jupyter notebook generate config会生成一个jupyter notebook config py 第二步 我们打开这个文件 搜索c Notebook
  • 排序【常见的七大排序详解】

    全文目录 排序的概念 排序的概念 内外排序 常见排序算法 稳定性 插入排序 算法思想 实现 特性总结 希尔排序 算法思想 实现 特性总结 选择排序 算法思想 实现 特性总结 冒泡排序 算法思想 实现 特性总结 堆排序 算法思想 实现 特性总
  • 用JavaScript去找出一个数组里的所有素数(质数)

    var x 定义一个变量x r arr 定义一个空数组 for x 1 x lt 100 x arr push x 把1 100依次放到数组arr中 function get primes arr return arr filter fun
  • oracle获取rowid,Oracle中的ROWID实现

    一直以来 Oracle的发展是如火如荼 依然非常成熟 无论是行业的人员和资料的丰富程度 对于数据库的体系结构的内容 下面这张图我估计很多DBA都快看吐了 每次一提起体系结构 总是会看到这张图 而看着10年前的图 发现依旧能讲出不少的东西 很
  • Eclipse导入新的项目并成功运行

    1 检查 setting 下的一个文件 检查里边的配置和自己的是否一致 2 右键file选择import导入 2 1 选择如图 next 2 2 继续 finish 3 右键项目选择 buildpath gt configure build
  • MySQL8.0.32的安装与配置(最详细)

    目录 一 下载 打开 MySQL官网 点击打开 依次按照 P1 P4 进行下载 二 下载解压 配置初始化文件mysql ini 新建data文件夹 解压之后 解压后把文件放在C盘以外的盘 的文件里边是没有data文件的 需要 创建一个空文件
  • 【机器学习】用可视化的方式直观理解Bayesian models

    如果你感觉Bayesian models反直觉 不好理解 本期分享两个工具 利用可视化的直观方式探索贝叶斯模型 1 Python ArviZ 主要包含以下4方面功能 后验分析 posterior analysis 数据存储 data sto