maxframe.tensor.random.hypergeometric#
- maxframe.tensor.random.hypergeometric(ngood, nbad, nsample, size=None, chunk_size=None, gpu=None, dtype=None)[源代码]#
从超几何分布中抽取样本。
样本从具有指定参数的超几何分布中抽取,参数包括 ngood(做出好选择的方式数)、nbad(做出坏选择的方式数)和 nsample(抽取的项目数),其中 nsample 小于或等于 ngood + nbad 的总和。
- 参数:
ngood (int or array_like of ints) -- 做出好选择的方式数。必须为非负数。
nbad (int or array_like of ints) -- 做出坏选择的方式数。必须为非负数。
nsample (int or array_like of ints) -- 抽取的项目数。必须至少为 1 且至多为
ngood + nbad。size (int or tuple of ints, optional) -- 输出形状。如果给定形状,例如
(m, n, k),则抽取m * n * k个样本。如果 size 为None``(默认),且 ``ngood、nbad和nsample均为标量,则返回单个值。否则抽取np.broadcast(ngood, nbad, nsample).size个样本。chunk_size (int or tuple of int or tuple of ints, optional) -- 每个维度上的期望块大小
gpu (bool, optional) -- 如果为 True,则在 GPU 上分配张量,默认为 False
dtype (data-type, optional) -- 返回张量的数据类型。
- 返回:
out -- 从参数化的超几何分布中抽取的样本。
- 返回类型:
Tensor or scalar
参见
scipy.stats.hypergeom概率密度函数、分布函数或累积密度函数等。
备注
超几何分布的概率密度为
\[P(x) = \frac{\binom{m}{n}\binom{N-m}{n-x}}{\binom{N}{n}},\]其中 \(0 \le x \le m\) 且 \(n+m-N \le x \le n\)
对于 P(x),x 表示成功的次数,n = ngood,m = nbad,N = 样本数。
考虑一个装有黑色和白色弹珠的罐子,其中 ngood 个为黑色,nbad 个为白色。如果在不放回的情况下抽取 nsample 个球,则超几何分布描述了抽样样本中黑球的分布情况。
注意,该分布与二项分布非常相似,不同之处在于此时样本是不放回抽取的,而在二项分布中样本是放回抽取的(或者样本空间是无限的)。当样本空间变大时,该分布趋近于二项分布。
引用
示例
从分布中抽取样本:
>>> import maxframe.tensor as mt
>>> ngood, nbad, nsamp = 100, 2, 10 # number of good, number of bad, and number of samples >>> s = mt.random.hypergeometric(ngood, nbad, nsamp, 1000) >>> hist(s) # note that it is very unlikely to grab both bad items
假设你有一个装有15个白色和15个黑色弹珠的瓮。如果你随机抽取15个弹珠,其中12个或更多弹珠是同一种颜色的概率是多少?
>>> s = mt.random.hypergeometric(15, 15, 15, 100000) >>> (mt.sum(s>=12)/100000. + mt.sum(s<=3)/100000.).execute() # answer = 0.003 ... pretty unlikely!