PyMC

马尔科夫链蒙特卡洛采样工具
授权协议 AFL 3.0
开发语言 Python
所属分类 神经网络/人工智能、 机器学习/深度学习
软件类型 开源软件
地区 不详
投 递 者 后烨煜
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

PyMC是一个实现贝叶斯统计模型和马尔科夫链蒙塔卡洛采样工具拟合算法的Python库。PyMC的灵活性及可扩展性使得它能够适用于解决各种问题。除了包含核心采样功能,PyMC还包含了统计输出、绘图、拟合优度检验和收敛性诊断等方法。

特性

PyMC使得贝叶斯分析尽可能更加容易。以下是一些PyMC库的特性:

  • 用马尔科夫链蒙特卡洛算法和其他算法来拟合贝叶斯统计分析模型。

  • 包含了大范围的常用统计分布。

  • 尽可能地使用了NumPy的一些功能。

  • 包括一个高斯建模过程的模块。

  • 采样循环可以被暂停和手动调整,或者保存和重新启动。

  • 创建包括表格和图表的摘要说明。

  • 算法跟踪记录可以保存为纯文本,pickles,SQLite或MySQL数据库文档或HDF5文档。

  • 提供了一些收敛性诊断方法。

  • 可扩展性:引入自定义的步骤方法和非常规的概率分布。

  • MCMC循环可以嵌入在较大的程序中,结果可以使用Python进行分析。

安装

PyMC可以运行在Mac OS X,Linux和Windows系统中。安装一些其他预装库可以更大程度地提高PyMC的性能和功能。

预装库

PyMC的运行要求一些预装库的安装及配置。

使用方法:

1. 模型定义:

# Import relevant modules
import pymc
import numpy as np

# Some data
n = 5*np.ones(4,dtype=int)
x = np.array([-.86,-.3,-.05,.73])

# Priors on unknown parameters
alpha = pymc.Normal('alpha',mu=0,tau=.01)
beta = pymc.Normal('beta',mu=0,tau=.01)

# Arbitrary deterministic function of parameters
@pymc.deterministic
def theta(a=alpha, b=beta):
"""theta = logit^{-1}(a+b)"""
return pymc.invlogit(a+b*x)

# Binomial likelihood for data
d = pymc.Binomial('d', n=n, p=theta, value=np.array([0.,1.,3.,5.]),\
              observed=True)

调用模型:

import pymc
import mymodel

S = pymc.MCMC(mymodel, db='pickle')
S.sample(iter=10000, burn=5000, thin=2)
pymc.Matplot.plot(S)

以上代码运行会产生10000个后验样本。这个样本会存储在Python序列化数据库中。

  • 马尔科夫蒙特卡洛(MCMC)算法 马尔科夫链蒙特卡洛方法(Markov Chain Monte Carlo),简称MCMC,产生于20世纪50年代早期,是在贝叶斯理论框架下,通过计算机进行模拟的蒙特卡洛方法(Monte Carlo)。该方法将马尔科夫(Markov)过程引入到Monte Carlo模拟中,实现抽样分布随模拟的进行而改变的动态模拟,弥补了传统的蒙特卡罗积分只能静态模拟的缺陷。MCMC

  • 解决方法: 1. 一般情况:先验设定存在问题(不合适),建议按照同一问题背景下,用别人找到的推荐先验设置。或者查阅相关论文,使得变量先验符合模型背景。 2. 在使用别人的推荐先验还是存在极慢的采样,可以检查数据集,数据的分布情况是否和参考教程一致,比如别人是正态,你的是双峰或者偏正态,可以先进行转化调整。 3. 更换初始方法,例如find_MAP。 4. 上述方法只能解决很慢的情况下,一两天都不能

  • 背景介绍: 在Anaconda文件夹下打开Jupyter Notebook后,输入import pymc3之后报错“module not found error: no module named ‘arviz’”,尝试很久之后无法解决,决定重装。 1.完全删除Anaconda: 官方文档 分为了完全删除和简单删除,此处因为后续还需要重新安装,所以选择了完全删除。 上述操作完成之后,同时从参考了另一

  • 直接安装PyMc3会报错,需要打开terminal,然后使用pip安装正确的版本(如下),再去import,就不会出错。 # 在terminal里面安装 # 只能用pip安装,不要用conda安装 pip install PyMC3==3.10.0 pip install Theano-pymc==1.0.11 pip install ArviZ==0.11.2 # import package

 相关资料
  • 1. 马尔科夫链概述 马尔科夫链定义本身比较简单,它假设某一时刻状态转移的概率只依赖于它的前一个状态。举个形象的比喻,假如每天的天气是一个状态的话,那个今天是不是晴天只依赖于昨天的天气,而和前天的天气没有任何关系。当然这么说可能有些武断,但是这样做可以大大简化模型的复杂度,因此马尔科夫链在很多时间序列模型中得到广泛的应用,比如循环神经网络RNN,隐式马尔科夫模型HMM等,当然MCMC也需要它。 如

  • 1 前言 在上一篇文章中,我们介绍了基于Bellman方程而得到的Policy Iteration和Value Iteration两种基本的算法,但是这两种算法实际上很难直接应用,原因在于依然是偏于理想化的两个算法,需要知道状态转移概率,也需要遍历所有的状态。对于遍历状态这个事,我们当然可以不用做到完全遍历,而只需要尽可能的通过探索来遍及各种状态即可。而对于状态转移概率,也就是依赖于模型Model

  • 个人觉得,整个 AplphaGo 对于机器学习来说,最核心的算法就是深度学习(Deep Learning)和增强学习(Reinforcement Learning)。蒙特卡洛树搜索 MCTS 是一个搜索框架,将这些机器学习的技术融合在了一起。今天这篇文章的重点在深度学习,增强学习以后再说。 蒙特卡洛树搜索 每个博弈类的人工智能算法的基础都是一个搜索算法。比如我们上学时学习的 A-star 算法,a

  • 本文向大家介绍python实现隐马尔科夫模型HMM,包括了python实现隐马尔科夫模型HMM的使用技巧和注意事项,需要的朋友参考一下 一份完全按照李航<<统计学习方法>>介绍的HMM代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 我已经为“ 2d有效ising模型”编写了蒙特卡洛模拟,并且试图改善运行时间。 我的代码做什么:我为每个粒子(rgrid和mgrid)创建一个用于粒子数量(r)的矩阵和一个用于磁化强度的矩阵。粒子的自旋可以是-1/1,因此磁化强度范围为[-r,r],步长为2。 然后选择一个随机点和一个随机粒子(+1或-1)。由于概率取决于每个位置的正/负粒子数量,因此我创建了2个数组并将其压缩,这样我

  • 1. hmmlearn概述 hmmlearn安装很简单,"pip install hmmlearn"即可完成。 hmmlearn实现了三种HMM模型类,按照观测状态是连续状态还是离散状态,可以分为两类。GaussianHMM和GMMHMM是连续观测状态的HMM模型,而MultinomialHMM是离散观测状态的模型,也是我们在HMM原理系列篇里面使用的模型。 对于MultinomialHMM的模型

  • 首先我们来看看什么样的问题解决可以用HMM模型。使用HMM模型时我们的问题一般有这两个特征:1)我们的问题是基于序列的,比如时间序列,或者状态序列。2)我们的问题中有两类数据,一类序列数据是可以观测到的,即观测序列;而另一类数据是不能观察到的,即隐藏状态序列,简称状态序列。 有了这两个特征,那么这个问题一般可以用HMM模型来尝试解决。这样的问题在实际生活中是很多的。比如:我现在在打字写博客,我在键