2.Numpy随机抽样

随机抽样

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

numpy.random.seed(seed=None) Seed the generator.

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

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

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

二项分布概率函数的代码表示:binom.pmf(k) = choose(n, k) pk (1-p)(n-k)

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3YXagI8c-1606309043137)(attachment:image.png)]
numpy.random.binomial(n, p, size=None) Draw samples from a binomial distribution.
表示对一个二项分布进行采样,size表示采样的次数,n表示做了n重伯努利试验,p表示成功的概率,函数的返回值表示n中成功的次数。

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

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

np.random.seed(20

### 使用 NumPy 对数组进行随机抽样 NumPy 提供了一个强大的函数 `numpy.random.choice`,可用于从一维数组中生成随机样本。此函数允许用户自定义多种参数以适应不同的需求。 #### 函数说明 `numpy.random.choice(a, size=None, replace=True, p=None)` 是一个用于随机抽样的函数[^1]。其中: - 参数 `a`: 可以为整数或一维数组。如果是整数,则表示从 `[0, a)` 范围内的整数中抽;如果是一维数组,则从中直接抽元素。 - 参数 `size`: 表示输出样本的数量或形状,默认为 None(即只返回单个值)。 - 参数 `replace`: 布尔型标志位,决定是否放回抽样。默认为 True(有放回),设为 False 则无放回。 - 参数 `p`: 一维数组,表示对应于输入数组中每个元素的选择概率。如果不提供该参数,则认为所有元素具有相等的概率被选中。 #### 示例代码 以下展示了如何使用 `numpy.random.choice` 对 NumPy 数组进行随机抽样: ```python import numpy as np # 初始化一个 NumPy 数组 arr = np.array([10, 20, 30, 40, 50]) # 设置随机种子以便结果可重现 np.random.seed(42) # 抽单个样本 single_sample = np.random.choice(arr) print("Single Sample:", single_sample) # 输出单一随机样本 # 抽多个样本并设置大小 multiple_samples_with_replacement = np.random.choice(arr, size=5, replace=True) print("Multiple Samples with Replacement:", multiple_samples_with_replacement) # 放回抽样 # 不放回抽样 if len(arr) >= 3: # 确保不放回抽样时不会超出范围 multiple_samples_without_replacement = np.random.choice(arr, size=3, replace=False) print("Multiple Samples without Replacement:", multiple_samples_without_replacement) # 不放回抽样 # 自定义概率分布下的抽样 probabilities = [0.1, 0.1, 0.2, 0.3, 0.3] weighted_sample = np.random.choice(arr, size=5, replace=True, p=probabilities) print("Weighted Random Samples:", weighted_sample) # 按权重抽样 ``` #### 关键点解析 - **随机种子**: 在实际应用中,为了使实验结果具备可重复性,通常会在程序开头设定固定的随机种子。这可通过调用 `np.random.seed(value)` 实现[^3]。 - **无放回抽样限制**: 当采用无放回模式 (`replace=False`) 并尝试抽超过源数组长度的样本时,将会引发异常。因此,在设计此类逻辑前应先确认所需样本量不超过可用数据规模。 - **加权抽样**: 若要让某些特定项更有可能被挑选到,可以通过传递合适的概率向量至参数 `p` 达成目的。注意,这些概率之和必须等于 1。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值