数理基础(概率论)------离散型随机变量均匀分布、正态分布、指数分布图像和连续型随机变量泊松分布、二项分布图像
生活随笔
收集整理的這篇文章主要介紹了
数理基础(概率论)------离散型随机变量均匀分布、正态分布、指数分布图像和连续型随机变量泊松分布、二项分布图像
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.均勻分布
1.1標準均勻分布(0-1)
import numpy as np #滿足0-1均勻分布 X~U(a,b) a=0,b=1 s1=np.random.rand(1000) print(s1) #期望 E(X)=(a+b)/2=(0+1)/2=0.5 print(s1.mean()) #方差 D(X)=(b-a)2/12=1/12 print(s1.var())代碼運行結果: 0.49659926508513635 0.081770070779136711.2均勻分布(a=1,b=4)
import numpy as np #滿足1-4均勻分布 X~U(a,b) a=1,b=4 s2=np.random.uniform(1,4,1000) print(s2) #期望 E(X)=(a+b)/2=(1+4)/2=0.5 print(s2.mean()) #方差 D(X)=(b-a)2/12=3/4 print(s2.var())#繪制直方圖 #hist(第一個參數:數據, 2:分成多少組) plt.hist(s2,50) #x軸:分成的小區間 y軸:在小區間中分別包含多少個數 plt.show()代碼運行結果: 2.4636368580531967 0.76189355458952952.正態分布
2.1標準正態分布(μ=0,σ=1)
import numpy as np #滿足標準正態分布 X~N(μ,σ2) μ=0,σ=1 s3=np.random.randn(1000) print(s3) #期望 E(X)=μ=0 print(s3.mean()) #方差 D(X)=σ2=1 print(s3.var()) #繪制直方圖 #hist(第一個參數:數據, 2:分成多少組) plt.hist(s3,50) #x軸:分成的小區間 y軸:在小區間中分別包含多少個數 plt.show() 代碼運行結果: 0.010533220131881613 1.03558964476703962.2正態分布(μ=6,σ=4)
import numpy as np #滿足標準正態分布 X~N(μ,σ2) μ=6,σ=4 s4=np.random.normal(6,4,1000) print(s4) #期望 E(X)=μ=0 print(s4.mean()) #方差 D(X)=σ2=16 print(s4.var()) #繪制直方圖 #hist(第一個參數:數據, 2:分成多少組) plt.hist(s4,50) #x軸:分成的小區間 y軸:在小區間中分別包含多少個數 plt.show() 代碼運行結果: 5.925563519203148 15.3806466473284173. 自定義均勻分布
import numpy as np import matplotlib.pyplot as plt def uniform(x,a,b):ls=[]for i in x:if a<=i<=b:y=1/(b-a)ls.append(y)else:ls.append(0)return lsdef uniform(x,a,b):y = [1 / (b - a) if a <= i and i <= b else 0 for i in x]return y繪制一個a,b不同取值的情況
#繪制a和b等于一個值的情況 x=np.linspace(-10,10,100) #使用numpy生成 -10-10 之間100個點 a=3 # a設置為3 b=5 # b設置為5 y=uniform(x,a,b) #調用函數,計算 y對應的值 plt.plot(x,y) #繪制均勻分布的概率密度函數圖像 plt.show()用for循環實現繪制多個a,b不同取值的圖像
# a,b=(-8,0)、(-3,3)、(2,7) # 用for循環實現繪制多個a,b不同取值的圖像 x=np.linspace(-10,10,100) #使用numpy生成 -10-10 之間100個點 ls=[(-8,0),(-3,3),(2,7)] for k in ls:a,b=k[0],k[1]y=uniform(x,a,b) #調用上面uniform函數,計算y對應的值plt.plot(x,y,label='a={},b={}'.format(a,b))plt.legend() plt.show()4. 自定義正態分布
import numpy as np import matplotlib.pyplot as plt def normal(x):miu = x.mean() # 期望sigma = x.std() # 標準差a=(x-miu)**2/(2*sigma**2)y=1/(sigma*(2*np.pi)**0.5)*np.exp(-a)return y,miu,sigmaif __name__ == '__main__':x=np.linspace(4,7,1000)y,miu,sigma=normal(x) #調用函數,計算 y對應的值plt.plot(x,y,label=r'$\mu={:.2f},\sigma={:.2f}$'.format(miu,sigma))plt.legend()plt.show()5. 自定義指數分布
import numpy as np import matplotlib.pyplot as pltdef zhishu(x,r):y = r * np.exp(-r * x)return yif __name__ == '__main__':x=np.linspace(0,10,1000) #使用numpy生成 0-5之間100個點r=6 # λ設置為3y=zhishu(x,r) #調用函數,計算y對應的值plt.plot(x,y) #繪制指數分布的概率密度函數圖像plt.show()6. 自定義二項分布
def bioxiang(n,p):la=[]for k in range(n+1):y=sp.comb(n,k)*p**k*(1-p)**(n-k)la.append(y)return ladef bioxiang(n,p):y=[sp.comb(n,k)*p**k*(1-p)**(n-k) for k in range(n+1)]return yif __name__ == '__main__':n = 10p = 0.6# x=np.arange(n+1) #使用numpy生成 0,1...10 11個點x=[i for i in range(n+1)]y=bioxiang(n,p) #調用函數,計算 y對應的值plt.scatter(x,y,marker='o') #繪制分布律函數圖像plt.savefig('b.jpeg')plt.show()7. 自定義泊松分布
import numpy as np import scipy.special as sp import matplotlib.pyplot as pltdef possion(n,rua):ls=[]for k in range(n+1):y=rua**k/(sp.factorial(k))*np.exp(-rua)ls.append(y)return lsdef possion(n,rua):ls=[rua**k/(sp.factorial(k))*np.exp(-rua) for k in range(n+1)]return lsif __name__ == '__main__':n=11rua=5x=np.arange(n+1)#使用numpy生成 0,1...20 21個點y=possion(n,rua)#調用函數,計算 y對應的值plt.scatter(x,y,marker='o')#繪制分布律函數圖像plt.show()8. 自定義兩點分布
import numpy as np import matplotlib.pyplot as plt import scipy.statsdef binpoint(p):a=0b=1y={a:p,b:1-p}return [y[a],y[b]]p=0.3 x=np.array([0,1]) y=binpoint(p) plt.scatter(x,y) plt.show()9. 卡方分布
from scipy import stats import numpy as np import matplotlib.pyplot as plt x=np.linspace(0, 10, 100) df=4 y=stats.chi2.pdf(x, df) plt.plot(x, y) plt.xlim(0, 10) plt.ylim(0, 0.4) from scipy import stats import numpy as np import matplotlib.pyplot as pltx=np.linspace(0, 10, 100) ls=[2,4,7,9] linestyle=[':', '--', '-.', '-'] for df,lines in zip(ls,linestyle):y=stats.chi2.pdf(x, df)plt.plot(x, y,linestyle=lines,label=r'df={}'.format(2,4,7,9)) plt.xlim(0, 10) plt.ylim(0, 0.4) plt.xlabel('Value') plt.ylabel('Frequency') plt.title('Chi-Square Distribution') plt.legend(loc='upper right') plt.show()10. beta分布
import matplotlib.pyplot as plt import numpy as np import scipy.stats as statsx = np.arange(0.01, 1, 0.01) alpha = 1 beta = 1 y = stats.beta.pdf(x, alpha, beta) plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))alpha = 1 beta = 3 y = stats.beta.pdf(x, alpha, beta) plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))alpha = 1 beta = 5 y = stats.beta.pdf(x, alpha, beta) plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))alpha = 1 beta = 7 y = stats.beta.pdf(x, alpha, beta) plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta)) plt.legend(loc="upper left") plt.xlabel("Number of success") plt.ylabel("Probablity of success") plt.legend(loc='upper') plt.show() import matplotlib.pyplot as plt import numpy as np import scipy.stats as statsx = np.arange(0.01, 1, 0.01) alpha = 0.5 beta = 1 y = stats.beta.pdf(x, alpha, beta) plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))alpha = 1 beta = 1 y = stats.beta.pdf(x, alpha, beta) plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))alpha = 3 beta = 1 y = stats.beta.pdf(x, alpha, beta) plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))alpha = 5 beta = 1 y = stats.beta.pdf(x, alpha, beta) plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))plt.legend(loc="upper left") plt.xlabel("Number of success") plt.ylabel("Probablity of success") plt.legend(loc='upper') plt.show() import matplotlib.pyplot as plt import numpy as np import scipy.stats as stats x = np.arange(0.01, 1, 0.01) alpha = [0.5,1,4,7] beta = 1 for alpha in alpha:x = np.arange(0.01, 1, 0.01)y = stats.beta.pdf(x, alpha, beta)plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))alpha=1 beta=[0.5,1,1.5,5] for beta in beta:y = stats.beta.pdf(x, alpha, beta)plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta)) plt.legend(loc="upper left") plt.xlabel("Number of success") plt.ylabel("Probablity of success") # plt.legend(loc='upper') plt.show()總結
以上是生活随笔為你收集整理的数理基础(概率论)------离散型随机变量均匀分布、正态分布、指数分布图像和连续型随机变量泊松分布、二项分布图像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学校校园网联网计算机统计,xx学校校园网
- 下一篇: 入库/供应商管理库存(SMI)