numpy组队学习——随机抽样

numpy组队学习——随机抽样

1、概述

numpy.random 模块对 Python 内置的 random 进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数,如正态分布、泊松分布等。

numpy.random.seed(seed=None) 

seed()用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed()值,则每次生成的随机数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。

在对数据进行预处理时,经常加入新的操作或改变处理策略,此时如果伴随着随机操作,最好还是指定唯一的随机种子,避免由于随机的差异对结果产生影响。

2、离散型随机变量

2.1 二项分布

二项分布可以用于只有一次实验只有两种结果,各结果对应的概率相等的多次实验的概率问题。比如处理猜10次拳赢6次的概率等类似的问题。

二项分布概率函数的代码表示:

binom.pmf(k) = choose(n, k) p**k (1-p)**(n-k)

二项分布概率函数的数学表示:
在这里插入图片描述

numpy.random.binomial(n, p, size=None)

表示对一个二项分布进行采样,size表示采样的次数,n表示做了n重伯努利试验,p表示成功的概率,函数的返回值表示n中成功的次数。

例1:野外正在进行9(n=9)口石油勘探井的发掘工作,每一口井能够开发出油的概率是0.1(p=0.1)。请问,最终所有的勘探井都勘探失败的概率?

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

np.random.seed(20200605)
n = 9# 做某件事情的次数
p = 0.1# 做某件事情成功的概率
size = 50000
x = np.random.binomial(n, p, size)
'''或者使用binom.rvs
#使用binom.rvs(n, p, size=1)函数模拟一个二项随机变量,可视化地表现概率
y = stats.binom.rvs(n, p, size=size)#返回一个numpy.ndarray
'''
print(np.sum(x == 0) / size)  # 0.3897

plt.hist(x)
plt.xlabel('随机变量:成功次数')
plt.ylabel('样本中出现的次数')
plt.show()
#它返回一个列表,列表中每个元素表示随机变量中对应值的概率
s = stats.binom.pmf(range(10), n, p)
print(np.around(s, 3))
# [0.387 0.387 0.172 0.045 0.007 0.001 0.    0.    0.    0.   ]

例2:模拟投硬币,投两次,请问两次都为正面的概率?

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

np.random.seed(20200605)
n = 2# 做某件事情的次数,这里是投两次硬币
p = 0.5#做某件事情成功的概率,在这里即投硬币为正面的概率
size = 50000
x = np.random.binomial(n, p, size)
'''或者使用binom.rvs
#使用binom.rvs(n, p, size=1)函数模拟一个二项随机变量,可视化地表现概率
y = stats.binom.rvs(n, p, size=size)#返回一个numpy.ndarray
'''
print(np.sum(x == 0) / size)  # 0.25154
print(np.sum(x == 1) / size)  # 0.49874
print(np.sum(x == 2) / size)  # 0.24972

plt.hist(x)
plt.xlabel('随机变量:硬币为正面次数')
plt.ylabel('50000个样本中出现的次数')
plt.show()
#它返回一个列表,列表中每个元素表示随机变量中对应值的概率
s = stats.binom.pmf(range(n + 1), n, p)
print(np.around(s, 3))

分割线 明天继续
——————————————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用概率论中的随机变量分布来进行统计计算。常见的离散型分布包括二项分布和泊松分布,连续性分布包括正态分布、均匀分布和指数分布等。这些分布可以用来计算概率、期望和方差等统计量。 对于正态分布,可以使用scipy.stats库中的norm模块进行计算。例如,可以使用norm.cdf函数计算小于某个值的概率,使用norm.ppf函数计算给定累积概率时的反函数值。代码示例如下: ``` from scipy.stats import norm # 计算小于40的概率 p1 = norm.cdf(40, loc=50, scale=10) # 计算30到40之间的概率 p2 = norm.cdf(40, loc=50, scale=10) - norm.cdf(30, loc=50, scale=10) # 计算小于2.5的概率 p3 = norm.cdf(2.5, 0, 1) # 计算-1.5到2之间的概率 p4 = norm.cdf(2) - norm.cdf(-1.5) # 计算累计概率为0.025时的反函数值 q1 = norm.ppf(0.025, loc=0, scale=1) # 计算累计概率为0.975时的反函数值 q2 = norm.ppf(0.975, 0, 1) print(p1, p2, p3, p4, q1, q2) ``` 对于计算随机变量的概率分布的均值和方差,可以使用numpy库进行计算。代码示例如下: ``` import numpy as np # 假设有一个数据框df,其中包含了不合格品数和概率 mymean = sum(df['不合格品数'] * df['概率']) # 计算均值 myvar = sum((df['不合格品数'] - mymean) ** 2 * df['概率']) # 计算方差 mystd = np.sqrt(myvar) # 计算标准差 print(mymean, myvar, mystd) ``` 以上是关于Python统计学中随机变量的概率分布的一些基本操作和计算方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python统计学03——随机变量的概率分布](https://blog.csdn.net/weixin_46277779/article/details/126673517)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值