貝葉斯與門特卡洛取樣python庫

2021-09-30 14:31:46 字數 3387 閱讀 4128

pymc是乙個實現貝葉斯統計模型和馬爾科夫鏈蒙塔卡洛取樣工具擬合演算法的python庫。pymc的靈活性及可擴充套件性使得它能夠適用於解決各種問題。除了包含核心取樣功能,pymc還包含了統計輸出、繪圖、擬合優度檢驗和收斂性診斷等方法。

pymc使得貝葉斯分析盡可能更加容易。以下是一些pymc庫的特性:

pymc可以執行在mac os x,linux和windows系統中。安裝一些其他預裝庫可以更大程度地提高pymc的效能和功能。

pymc的執行要求一些預裝庫的安裝及配置。

安裝pymc最簡單的方式是在終端輸入以下**:

shell

1

easy_install

pymc

確保使用者具有適合的許可權進行安裝。

雙擊可執行安裝包,按照嚮導進行安裝。

使用者可以在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^(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)

儲存此檔案,在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應用。

pymc提供了一些可以擬合概率模型的方法。最主要的擬合模型方法是mcmc,即馬爾科夫蒙特卡洛演算法。生成乙個mcmc物件來處理我們的模型,匯入disaster_model.py並將其作為mcmc的引數。

12

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

) 等待幾秒鐘後,便可以看到取樣過程執行完成,模型已經完成擬合。

建模教程

擬合模型:

儲存和管理取樣結果

模型檢驗與診斷

擴充套件pymc

概率分布

官方**:

python實現貝葉斯

貝葉斯演算法的實現 2020.1.14 import numpy class bayes def init self self.lenght 1 self.labels count dict self.vector count dict def fit self,dataset list label...

python 樸素貝葉斯之多項式貝葉斯

關注csdn部落格 程志偉的部落格 多項式貝葉斯可能是除了高斯之外,最為人所知的貝葉斯演算法了。它也是基於原始的貝葉斯理論,但假設概率分布是 服從乙個簡單多項式分布。多項式分布 於統計學中的多項式實驗,這種實驗可以具體解釋為 實驗包括n次重複 試驗,每項試驗都有不同的可能結果。在任何給定的試驗中,特...

樸素貝葉斯演算法python

樸素貝葉斯演算法的工作原理主要是概率論和數理統計 通過屬性對分類的影響程度,所展現不同的結果 import numpy as np x np.array 0,1,0,1 1,1,1,0 0,1,1,0 0,0,0,1 0,1,1,0 0,1,0,1 1,0,0,1 y np.array 0,1,1,...