几何分布是一种离散概率分布,它表示随机变量 (X) 的概率分布,该随机变量代表获得一次成功所需的伯努利试验次数。

概率质量函数 (pmf) 几何分布定义为:

NumPy 几何分布

其中,k 是伯努利试验的次数 (k = 1,2...),p 是每次试验成功的概率。

几何分布的平均值为 1/ p 和方差 (1-p)/p2

在 k 处计算的累积分布函数 (cdf) ,是随机变量 (X) 取小于或等于 k 的值的概率。几何分布的cdf定义为:

NumPy 几何分布

NumPy random.geometric() 函数返回几何分布的随机样本。

语法

numpy.random.geometric(p, size=None) 

参数

p必填。 指定每次试验的成功概率,必须在 [0, 1] 范围内。 float 或 array_like of floats。
size可选。 指定输出形状。 int 或 int 元组。如果给定形状为(m, n, k),则绘制m * n * k个样本。如果 size 为 None(默认),并且 n 和 p 均为标量,则返回单个值。否则,将抽取 np.broadcast(n, p).size 个样本。

返回值

从参数化几何分布返回样本。 ndarray 或标量。

示例:几何分布的值

在下面的示例中,random.geometric() 函数用于创建给定矩阵包含从指定几何分布中抽取的随机值的形状。

import numpy as np

size = (5,3)

sample = np.random.geometric(0.5, size)
print(sample) 

上述代码的可能输出可能是:

[[2 2 4]
 [2 2 1]
 [1 1 1]
 [1 1 2]
 [5 2 1]] 

绘制几何分布

示例:直方图

Matplotlib 是一个 Python 绘图库,可用于绘制几何分布的概率质量函数 (pmf)使用 hist() 函数。

import matplotlib.pyplot as plt
import numpy as np

#修复种子以提高重现性
#结果
np.random.seed(10)

size = 10000
#抽取10000个样本
#几何分布
sample = np.random.geometric(0.5, size)
bin = np.arange(0,20,1)

plt.hist(sample, bins=bin, edgecolor='blue') 
plt.title("Geometric Distribution") 
plt.show() 

上述代码的输出将是:

NumPy 几何分布

示例:比较 cdf

可以使用 Seaborn ecdfplot() 函数以图形方式比较多个累积分布函数。 在下面的示例中,比较了三个几何分布(每个具有不同的成功概率)的 cdf。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

#修复种子以提高重现性
#结果
np.random.seed(10)

size = 1000
#绘制1000个样本
#不同的几何分布
sns.ecdfplot(np.random.geometric(0.2, size))
sns.ecdfplot(np.random.geometric(0.5, size))
sns.ecdfplot(np.random.geometric(0.8, size))

plt.legend(["$p = 0.2$", 
            "$p = 0.5$", 
            "$p = 0.8$"])
plt.show() 

上述代码的输出将是:

NumPy 几何分布