转载地址:http://hao.jobbole.com/pymc/

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

特性

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

  • 用马尔科夫链蒙特卡洛算法和其他算法来拟合贝叶斯统计分析模型。
  • 包含了大范围的常用统计分布。
  • 尽可能地使用了NumPy的一些功能。
  • 包括一个高斯建模过程的模块。
  • 采样循环可以被暂停和手动调整,或者保存和重新启动。
  • 创建包括表格和图表的摘要说明。
  • 算法跟踪记录可以保存为纯文本,pickles,SQLite或MySQL数据库文档或HDF5文档。
  • 提供了一些收敛性诊断方法。
  • 可扩展性:引入自定义的步骤方法和非常规的概率分布。
  • MCMC循环可以嵌入在较大的程序中,结果可以使用Python进行分析。

安装

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

预装库

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

  • Python2.6及以上版本
  • NumPy(1.6版本及以上)
  • Matplotlib(1.0版本及以上)
  • SciPy(可选)
  • pyTables(可选)
  • pydot(可选)
  • IPython(可选)
  • nose(可选)

使用EasyInstall安装

安装PyMC最简单的方式是在终端输入以下代码:

Shell
1
easy_install pymc

确保用户具有适合的权限进行安装。

使用预编译二进制文件进行安装

  1. 从PyPI下载安装器。
  2. 双击可执行安装包,按照向导进行安装。

编译源码安装

用户可以从the GitHub download page中下载源代码并解压。

从GitHub上安装

用户可以在GitHub中查找PyMC,并执行:

Shell
1
git clone git://github.com/pymc-devs/pymc.git

历史版本在/tags目录中可以找到。

执行测试套件

pymc中包含了一测试用例来确保代码中的关键组件能够正常运行。在运行这个测试之前,用户需要保证nose已经在本地安装好,在Python编译器中执行以下代码:

Python
1
2

import pymc
pymc.test()

如果测试失败,将会显示错误的具体信息。

使用

首先,在文件中定义你的模型,并命名为mymodel.py。

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 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)"""
    returnpymc.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)

保存此文件,在Python编译器或者相同目录下的其他文件中调用:

Python
1
2
3
4
5
6

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

这个例子会产生10000个后验样本。这个样本会存储在Python序列化数据库中。

教程示例

教程会指导用户完成常见的PyMC应用。

如何用MCMC来拟合模型

PyMC提供了一些可以拟合概率模型的方法。最主要的拟合模型方法是MCMC,即马尔科夫蒙特卡洛算法。生成一个MCMC对象来处理我们的模型,导入disaster_model.py并将其作为MCMC的参数。

1
2
3

>>>from pymc.examples import disaster_model
>>>from pymc import MCMC
>>>M=MCMC(disaster_model)

调用MCMC中的sample()方法(或者交互采样函数isample())来运行采样器:

1
>>>M.sample(iter=10000,burn=1000,thin=10)

等待几秒钟后,便可以看到采样过程执行完成,模型已经完成拟合。

其他教程

建模教程

  • 随机类
  • 数据
  • Deterministic类
  • 容器
  • Potential类
  • 图形模型
  • LazyFunction类与缓存

拟合模型:

  • 建立模型
  • 模型类
  • 最大化后验估计
  • 正态估计
  • 马尔科夫链蒙特卡洛:MCMC类
  • 采样器类
  • Step methods
  • Gibbs step methods

保存和管理采样结果

模型检验与诊断

扩展PyMC

概率分布

开发者资源

  • GitHub地址
  • Python官方的pymc文档说明
  • StackOverflow中关于PyMC的问题讨论
  • Python中的计算分析-使用PyMC2
  • Python中的计算分析-使用PyMC3
  • Python中的计算分析-MCMC
  • PyMC3官方文档

官方网站:http://pymc-devs.github.io/pymc/index.html
开源地址:https://github.com/pymc-devs/pymc

贝叶斯与门特卡洛采样python库相关推荐

  1. 基于朴素贝叶斯的垃圾分类算法(Python实现)

    有代码和数据集的 https://blog.csdn.net/weixin_33734785/article/details/91428991 附有git库代码的 https://www.cnblog ...

  2. 贝叶斯思维 统计建模的Python学习法pdf

    下载地址:网盘下载 编辑推荐 贝叶斯方法正在变得越来越常见与重要,但是却没有太多可以借鉴的资料来帮助初学者.基于Allen Downey在大学讲授的本科课程,本书的计算方法能帮助你获得一个良好的开端. ...

  3. 机器学习最易懂之贝叶斯模型详解与python实现

    文章目录 0.预备知识 0.1 先验概率.条件概率.后验概率 0.2 贝叶斯公式 0.3 极大似然估计 0.4 生成模型与判别模型 1.朴素贝叶斯模型 1.1 朴素贝叶斯的符号说明 1.2 朴素贝叶斯 ...

  4. 朴素贝叶斯情感分析评分python_详解基于朴素贝叶斯的情感分析及Python实现

    朴素贝叶斯 1.贝叶斯定理 假设对于某个数据集,随机变量C表示样本为C类的概率,F1表示测试样本某特征出现的概率,套用基本贝叶斯公式,则如下所示: 上式表示对于某个样本,特征F1出现时,该样本被分为C ...

  5. 详解基于朴素贝叶斯的情感分析及 Python 实现

    相对于「 基于词典的分析 」,「 基于机器学习 」的就不需要大量标注的词典,但是需要大量标记的数据,比如: 还是下面这句话,如果它的标签是: 服务质量 - 中 (共有三个级别,好.中.差) ╮(╯-╰ ...

  6. 朴素贝叶斯算法详解及python代码实现

    朴素贝叶斯算法 算法原理 对数据的要求 算法的优缺点 算法需要注意的点 算法实现(python)(待更.......) 算法原理 P(Ck∣xi)=p(xi∣ck)∗p(ck)p(xi)=p(x1∣c ...

  7. 【人工智能】对贝叶斯网络进行吉布斯采样

    问题 现要求通过吉布斯采样方法,利用该网络进行概率推理(计算 P(R=T|S=F, W=T).P2(C=F|W=T)的概率值). 原理 吉布斯采样的核心思想为一维一维地进行采样,采某一个维度的时候固定 ...

  8. 朴素贝叶斯情感分析评分python_详解基于朴素贝叶斯的情感分析及 Python 实现

    相对于「 基于词典的分析 」,「 基于机器学习 」的就不需要大量标注的词典,但是需要大量标记的数据,比如: 还是下面这句话,如果它的标签是: 服务质量 - 中 (共有三个级别,好.中.差) �r(�s ...

  9. 机器学习:朴素贝叶斯算法+中文情感分类+python

    朴素贝叶斯中文情感分类 1.写在前面 朴素贝叶斯算法理论在很多博客上已经解释的很详细了,本文就不再叙述,本文注重于算法的应用以及编程实现,在读取前人的博客以及他们的项目应用,本人结合书本<机器学 ...

最新文章

  1. oracle 的启动与连接
  2. STM32CubeMX HAL库串口+DMA数据发送不定长度数据接收
  3. php将pdf文件存入数据库,关于tcpdf:在我的php数据库中制作pdf文件
  4. kafka日志和数据分离
  5. SAP Netweaver和Cloud Foundry上的运行时进程
  6. linux系统初级管理书,Linux系统管理基础--超级适合Linux新手的书
  7. 颉伟/郭勇/李伟合作阐释哺乳动物早期胚胎发育中表观重编程和基因印记的进化保守性和物种特异性...
  8. 路径规划算法:Dijkstra算法 - 附代码
  9. 【语音去噪】基于matlab改进谱减法语音去噪【含Matlab源码 569期】
  10. 企业软件,WEB和对于他们无限美好的遐想(第五日)--2014-3-14--IT日 + Struts 原理分析 (四)
  11. C#和NET Framework的定义
  12. 模电与数电的基本知识 (学习备用)
  13. ERROR in Entry module not found: Error: Can‘t resolve ‘./src/index.js‘ in‘xxx.js‘
  14. 剑指Offer28.对称的二叉树
  15. net bios支持服务器,禁用NetBIOS巧妙解决网络不通故障
  16. KVM切换器如何选购
  17. Jacobi(雅可比)迭代原理与matlab代码
  18. 洛谷 P2791 幼儿园篮球题
  19. 39-网上商城数据库-用户信息数据操作
  20. Ansible mysql_db模块

热门文章

  1. 网站端服务器口号是什么,超线程PC是美丽的口号还是真正的技术
  2. phpmyadmin更新php,phpmyadmin 修改记录(不断更新)_PHP教程
  3. react16.8-17 全家桶学习 QA
  4. python中奖号_Python输入数字并从预定义的lis中选择中奖号码
  5. python代码画闪电_太震撼了,我用Python画出全北京的公交线路动图
  6. 用普通摄像头测量距离
  7. Filed to convert property value of type ‘java.lang.String‘ to required type ‘java.util.Date‘ for XX
  8. 2021年安全员-B证(陕西省)考试报名及安全员-B证(陕西省)
  9. 科东软件与工信部电子五所达成战略合作,共同推动国产工业基础软件高质量发展
  10. onlyoffice报错,这份文件无法保存。请检查连接设置或联系您的管理员当你点击“OK“按钮,系统将提示您下载文档。