马尔可夫链蒙特卡罗(Markov Chain Monte Carlo ,MCMC )方法主要算法有:Metropolis-Hastings (MH)算法、Metropolis采样算法,以及吉布斯采样方法,后两者都可以看作是MH算法的特例。

Metropolis-Hastings (MH)算法

步骤:

Metropolis采样算法

步骤和MH算法一样,只是利用的提议分布是对称的,即:=,所以分子分母中可以约掉。

仿真

目的:用标准正态分布(提议分布)模拟另外一个标准正态分布(目标分布),我们想生成符合这个密度函数的随机采样。(这里再强调一下,我们的提议分布函数为 proposal distribution,是比较好采样的,目标函数 target distribution 是不好采样的,我们通过好采样的函数采样,然后判断采到的样本是否被接受);

目标分布:μ=0,σ=5的正态分布;

提议分布:μ= 采样点处,σ=2的正态分布。

import numpy as np
import matplotlib.pyplot as plt
from scipy import statsnp.random.seed(42)
x=np.linspace(-20,20,100)
# raw_y=stats.expon(scale=1).pdf(x)
raw_y=stats.norm.pdf(x,0,5)Samp_Num=10000
result=[]
init=1
result.append(init)
# p=lambda r:stats.expon(scale=1).pdf(r)
p=lambda r:stats.norm.pdf(r,0,5)
q=lambda v:stats.norm.rvs(loc = v,scale = 2, size = 1)for i in range(Samp_Num):xstar=q(result[i])alpha=min(1,p(xstar)/p(result[i]))u=np.random.rand(1)if u<alpha:result.append(xstar)else:result.append(result[i])print(i)n, bins, patches = plt.hist(result, 50, density=1, facecolor='blue', alpha=0.5)
plt.plot(x,raw_y)
plt.show()

python实现Metropolis采样算法实例相关推荐

  1. Metropolis 采样算法

    前言 马尔科夫链 概念描述 转移概率矩阵 平稳分布 为何要用马尔科夫链 Metropolis 采样算法简介 Metropolis 采样算法思路 Metropolis 采样算法步骤 Metropolis ...

  2. 【机器学习算法-python实现】采样算法的简单实现

    1.背景     采样算法是机器学习中比较常用,也比较容易实现的(出去分层采样).常用的采样算法有以下几种(来自百度知道): 一.单纯随机抽样(simple random sampling)将调查总体 ...

  3. python鸢尾花案例_BP算法实例—鸢尾花的分类(Python)

    首先了解下Iris鸢尾花数据集: Iris数据集(https://en.wikipedia.org/wiki/Iris_flower_data_set)是常用的分类实验数据集,由Fisher,1936 ...

  4. Python用MCMC马尔科夫链蒙特卡洛、拒绝抽样和Metropolis-Hastings采样算法

    最近我们被客户要求撰写关于MCMC的研究报告,包括一些图形和统计输出. 我们将研究两种对分布进行抽样的方法:拒绝抽样和使用 Metropolis Hastings 算法的马尔可夫链蒙特卡洛方法 (MC ...

  5. MCMC中的Metropolis–Hastings算法与吉布斯采样

    Metropolis–Hastings算法是一种具体的MCMC方法,而吉布斯采样(Gibbs Sampling)是Metropolis–Hastings算法的一种特殊形式.二者在机器学习中具有重要作用 ...

  6. 中文分词算法python代码_python实现中文分词FMM算法实例

    本文实例讲述了python实现中文分词FMM算法.分享给大家供大家参考.具体分析如下: FMM算法的最简单思想是使用贪心算法向前找n个,如果这n个组成的词在词典中出现,就ok,如果没有出现,那么找n- ...

  7. python分割数字_对python数据切割归并算法的实例讲解

    当一个 .txt 文件的数据过于庞大,此时想要对数据进行排序就需要先将数据进行切割,然后通过归并排序,最终实现对整体数据的排序.要实现这个过程我们需要进行以下几步:获取总数据行数:根据行数按照自己的需 ...

  8. python线性回归算法简介_Python实现的简单线性回归算法实例分析

    本文实例讲述了Python实现的简单线性回归算法.分享给大家供大家参考,具体如下: 用python实现R的线性模型(lm)中一元线性回归的简单方法,使用R的women示例数据,R的运行结果: > ...

  9. 基本采样算法及Python实现

    本文代码见于 code 时不时地我们会在机器学习乃至深度神经网络中瞥见采样算法的身影.本文只关键简单的入门级的采样算法及其Python实现. use more samples for the more ...

最新文章

  1. Python 为什么用 # 号作注释符?
  2. 一文详解「群体机器人」中的「实体进化」到底是什么?
  3. Centos6.3下利用rsyslog+loganalyzer+mysql部署日志服务器
  4. 误执行了rm -fr /*之后,除了跑路还能怎么办?!
  5. 文件指针和文件描述符之间的相互转换 fd----fp 和 fp----fd
  6. 第十四节(接口(行为))
  7. 【精品分享】OpenStack Cinder mutliattach技术探秘
  8. 16进制地址编码速算内存容量
  9. 雷军博客分享-日本的电饭煲到底好在哪?
  10. 虚拟机安装+win10系统
  11. [计算几何] [BZOJ4246] 两个人的星座
  12. AD10中创建材料清单(BOM表)
  13. Javascript事件绑定的几种方式
  14. MeSH 医学主题词数据库
  15. mysql面试-01
  16. 用python做一个简单GUI小软件
  17. 技术点:前端缓存分类及使用
  18. CCM DC-DC变换器建模(3): 反激变换器flyback converter
  19. COMODO Time Machine最强多点备份还原之王
  20. 拼题---圆形体体积计算器 (20 分)

热门文章

  1. 联想手机html5,联想手机:良心不仅仅是高性价比
  2. PerCP-Cy5.5等常见流式抗体荧光染料研究
  3. Qt之QSS渐变效果
  4. 八卦与十二地支方位图_万物变化的经典,十二生肖八卦图方位图解析
  5. 智能问答-问题生成(QG)历史最全论文、综述、数据集整理分享
  6. 单片机数码管从00到99C语言_用51单片机控制 2位数码管动态显示 00 ~ 99。
  7. Java 面试知识点解析——网络协议篇
  8. 打造你个人成长的神兵利器--知识管理体系
  9. 关于React中useRef
  10. 人尽其才,胜任者就是人才