数据学习(五)-概率分布实践

概率分布实践

# 案例:玩抛硬币的游戏,只抛1次硬币,成功抛出正面朝上记录为1,反面朝上即抛硬币失败记录为0

# 导入包
import numpy as np
import matplotlib.pyplot as plt
# 统计计算包的统计模块
from scipy import stats
# 解决jupyter 中文问题
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] 

'''
第1步,定义随机变量:1次抛硬币
正面朝上记录为1,反面朝上记录为0
'''
# arange用于生成一个等差数组,arange([start, ]stop, [step, ]
X1 = np.arange(0,2,1)
print(X1)

'''
第2步,求对应分布的概率:概率质量函数(PMF)
返回一个列表,列表中每个元素表示随机变量中对应值的概率
'''
p1 = 0.5 # 硬币朝上的概率
pList1 = stats.bernoulli.pmf(X1,p1)
print(pList1)

'''
第3步,绘图
plot默认绘制折线
marker:点的形状,值o表示点为圆圈标记(circle marker)
linestyle:线条的形状,值None表示不显示连接各个点的折线
'''
plt.plot(X1,pList1,marker='o',linestyle='None')

'''
vlines用于绘制竖直线(vertical lines),
参数说明:vline(x坐标值, y坐标最小值, y坐标值最大值)
我们传入的X是一个数组,是给数组中的每个x坐标值绘制竖直线,
竖直线y坐标最小值是0,y坐标值最大值是对应pList1中的值
'''
plt.vlines(X1,0,pList1)
plt.xlabel('随机变量:抛1次硬币')
plt.ylabel('概率')
plt.title('伯努利分布:p=%.2f' % p1)
plt.show()

结果如下:
在这里插入图片描述

# 案例:继续玩抛硬币游戏,假如抛硬币5次,求抛出正面朝上次数的概率


# 第1步,定义随机变量:5次抛硬币,正面朝上的次数
n2 = 5    # 做某件事情的次数
p2 = 0.5  # 做某件事情成功的概率(抛硬币正面朝上的概率)
X2 = np.arange(0,n2+1,1) # 做某件事成功的次数(抛硬币正面朝上的次数)
print(X2)

# 第2步,求对应分布的概率:概率质量函数(PMF)
# 返回一个列表,列表中每个元素表示随机变量中对应值的概率
pList2 = stats.binom.pmf(X2,n2,p2)
print(pList2)

'''
第3步,绘图
plot默认绘制折线
marker:点的形状,值o表示点为圆圈标记(circle marker)
linestyle:线条的形状,值None表示不显示连接各个点的折线
'''
plt.plot(X2,pList2,marker='o',linestyle='None')

'''
vlines用于绘制竖直线(vertical lines),
参数说明:vline(x坐标值, y坐标最小值, y坐标值最大值)
我们传入的X是一个数组,是给数组中的每个x坐标值绘制竖直线,
竖直线y坐标最小值是0,y坐标值最大值是对应pList2中的值
'''
plt.vlines(X2,0,pList2)
plt.xlabel('随机变量:抛硬币正面朝上的次数')
plt.ylabel('概率')
plt.title('二项分布:n=%i,p=%.2f' % (n2,p2))
plt.show()

结果如下图所示:
在这里插入图片描述

# 案例:已知某路口发生事故的比率是每天2次,那么在此处一天内发生k次事故的概率是多少?

# 第1 步,定义随机变量
mu4 = 2  # 平均值:每天发生2次事故
k4 = 4   # 次数,现在想知道每天发生4次事故的概率
# 发生事故次数,包含0次,1次,2次,3次,4次事故
X4 = np.arange(0,k4+1,1)
print(X4)

'''
第2步,求对应分布的概率:概率质量函数(PMF)
返回一个列表,列表中每个元素表示随机变量中对应值的概率
分别表示发生0次,1次,2次,3次,4次事故的概率
'''
pList4 = stats.poisson.pmf(X4,mu4)
print(pList4)
print('X4:',X4)
print('pList4',pList4)

# 第3步,绘图
plt.plot(X4,pList4,marker='o',linestyle='None')
plt.vlines(X4,0,pList4)
plt.xlabel('某路口发生k次事故')
plt.ylabel('概率')
plt.title('泊松分布:平均值mu=%i' % mu4 )
plt.show()

结果如下所示:
在这里插入图片描述

# 第1步,定义随机变量
mu5 = 0   # 平均值
sigma = 1 # 标准差
X5 = np.arange(-5,5,0.1)
print(X5)

# 第2步,求概率密度函数(PDF)
y = stats.norm.pdf(X5,mu5,sigma)
print('X5:',X5)
print('y:',y)

# 第3步,绘图
plt.plot(X5,y)
plt.xlabel('随机变量:x')
plt.ylabel('概率:y')
plt.title('正态分布:$\mu$=%.1f,$\sigma^2$=%.1f' % (mu5,sigma))
plt.grid()
plt.show()

结果如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值