<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Scipy自帶了多種常見的分佈,如正態分佈、均勻分佈、二項分佈、多項分佈、伽馬分佈等等,還可以自定義任意的概率分佈。本文將介紹如何利用Scipy自定義任意的概率分佈。
考慮連續變數x滿足如下概率密度分佈函數:
其在實數域積分為1。我們可以通過scipy.stats中的rv_continuous類去實現這個分佈,程式碼如下:
from scipy.stats import rv_continuous import matplotlib.pyplot as plt import numpy as np class MyDistribution(rv_continuous): def _pdf(self, x):#概率密度分佈函數 return 2*sqrt(0.1)*exp(-0.1*x**2)*cos(x)**2/(sqrt(pi)*(exp(-10) + 1)) distribution = MyDistribution() xlist=np.linspace(-8,8,300) ylist=distribution.pdf(xlist) samples=distribution.rvs(size=200);#取200次樣 fig,ax=plt.subplots(figsize=(8,6)) ax.plot(xlist,ylist,lw=3,color='red',label="$mathrm{ideal}$"); ax.hist(samples,color='blue',density=True, bins=np.arange(-8,8,0.25), histtype='barstacked', rwidth=0.9,label=r"$mathrm{samples}$") ax.legend(fontsize=20); ax.set_xlabel(r"$x$",size=25) ax.set_ylabel(r"$mathrm{PDF}$",size=20) ax.set_xlim(-8,8); ax.tick_params(axis='both',direction='in',width=1.3,length=3,top=1,right=1,labelsize=20,pad=2) fig.tight_layout(); fig.show();
執行結果如下:
增加取樣次數,分佈直方圖逐漸趨於理想的概率分佈函數P(x)。
考慮連續變數x滿足泊松分佈,則可以用scipy.stats中的rv_discrete類去實現這個分佈,程式碼如下:
from scipy.stats import rv_discrete import matplotlib.pyplot as plt import numpy as np from scipy.special import factorial class MyDistribution(rv_discrete): def _pmf(self, k, mu): return exp(-mu)*mu**k/factorial(k) distribution = MyDistribution() mu=2 samples=distribution.rvs(size=500,mu=mu);#取500次樣 klist = np.arange(0,10,1) plist = distribution.pmf(klist,mu) fig, ax = plt.subplots() ax.plot(klist, plist, 'ro', ms=12, mec='r',label="$mathrm{ideal}$"); ax.hist(samples,color='blue',density=True, bins=klist, histtype='barstacked', rwidth=0.8,label=r"$mathrm{samples}$",align="left") ax.legend(fontsize=20); fig.show();
執行結果如下:
可以修改上述MyDistribution類中的pmf函數,實現任意想要的離散分佈。
是n個獨立的成功/失敗試驗中成功的次數的離散概率分佈,其中每次試驗的成功概率為p。這樣的單次成功/失敗試驗又稱為伯努利試驗。實際上,當n=1時,二項分佈就是伯努利分佈。
'''1、定義隨機變數''' # 比如5次擲硬幣實驗,正面朝上的次數 n2=5 x2=np.arange(1,n2+1,1) x2
array([1, 2, 3, 4, 5])
'''2、求對應的概率質量函數 (PMF)''' p2=0.5 pList2=stats.binom.pmf(x2,n2,p2) # 返回一個列表,列表中每個元素表示隨機變數中對應值的概率 pList2
array([0.15625, 0.3125 , 0.3125 , 0.15625, 0.03125])
'''3、繪圖''' fig=plt.figure() # plot在此的作用為顯示兩個標記點 plt.plot(x2,pList2,marker='o',linestyle='None') ''' vlines用於繪製豎直線(vertical lines), 引數說明:vline(x座標值, y座標最小值, y座標值最大值) ''' plt.vlines(x2, 0, pList2) plt.xlabel('隨機變數:拋硬幣5次') plt.ylabel('概率') plt.title('二項分佈:n=%d,p2=%0.2f' % (n2,p2)) plt.show()
在n次伯努利試驗中,試驗k次才得到第一次成功的機率。詳細地說,是:前k-1次皆失敗,第k次成功的概率。幾何分佈是帕斯卡分佈當r=1時的特例。
'''1、定義隨機變數''' # 比如射箭1次中靶的概率為90%,射5次箭 k=5 x3=np.arange(1,k+1,1) x3
array([1, 2, 3, 4, 5])
'''2、求對應的概率質量函數 (PMF)''' p3=0.7 pList3=stats.geom.pmf(x3,p3) # 返回一個列表,表示在第i次射擊中,第一次射中的概率 pList3
array([0.7 , 0.21 , 0.063 , 0.0189 , 0.00567])
'''3、繪圖''' fig=plt.figure() # plot在此的作用為顯示兩個標記點 plt.plot(x3,pList3,marker='o',linestyle='None') ''' vlines用於繪製豎直線(vertical lines), 引數說明:vline(x座標值, y座標最小值, y座標值最大值) ''' plt.vlines(x3, 0, pList3) plt.xlabel('隨機變數:射擊5次') plt.ylabel('概率') plt.title('幾何分佈:n=%d,p=%0.2f' % (k,p3)) plt.show()
描述在某單位時間內,事件發生n次的概率
'''1、定義隨機變數''' # 某機器每季度發生故障平均為1次,那麼在一年中機器發生10次的概率為 mu=4 # 平均值 k=10 # 要求發生10次的概率 x4=np.arange(1,k+1,1) x4
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
'''2、求對應的概率質量函數 (PMF)''' pList4=stats.poisson.pmf(x4,mu) # 一年的平均值為4 # 返回一個列表,表示1年中發生i次故障的概率 pList4
array([0.07326256, 0.14652511, 0.19536681, 0.19536681, 0.15629345, 0.10419563, 0.05954036, 0.02977018, 0.01323119, 0.00529248])
'''3、繪圖''' fig=plt.figure() # plot在此的作用為顯示兩個標記點 plt.plot(x4,pList4,marker='o',linestyle='None') ''' vlines用於繪製豎直線(vertical lines), 引數說明:vline(x座標值, y座標最小值, y座標值最大值) ''' plt.vlines(x4, 0, pList4) plt.xlabel('隨機變數:發生k次故障') plt.ylabel('概率') plt.title('泊松分佈:n=%d' % k) plt.show()
到此這篇關於Python+Scipy實現自定義任意的概率分佈的文章就介紹到這了,更多相關Python Scipy概率分佈內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45