上一个主题

numpy.random.chisquare

下一个主题

numpy.random.exponential

numpy.random.dirichlet

numpy.random.dirichlet(alpha, size=None)

从Dirichlet分布中提取样本。

size Dirichlet分布的尺寸k样本。Dirichlet分布随机变量可以看作是β分布的多元推广。Dirichlet-pdf是贝叶斯推理中多项式的共轭先验。

参数:
阿尔法 : 数组

分布参数(K尺寸为K尺寸的样品的K尺寸)。

size : int或int的元组,可选

输出形状。如果给定的形状是,例如, (m, n, k) 然后 m * n * k 取样。默认值为无,在这种情况下返回单个值。

返回:
样品 : 恩达雷

提取的样本,形状(大小,alpha.ndim)。

加薪:
ValueError

如果alpha中的任何值小于或等于零

笔记

x 近似值prod i=1 ^ k x ^ alpha i-1 u i

使用以下属性进行计算:对于每个维度,从标准形状gamma生成器中绘制随机样本y_i alpha_i 然后 X = \frac{{1}}{{\sum_{{i=1}}^k{{y_i}}}} (y_1, \ldots, y_n) 是Dirichlet分布的。

工具书类

[1]David McKay,“信息理论、推理和学习算法”,第23章,http://www.interrunce.org.uk/mackay/itila/
[2]维基百科,“dirichlet distribution”,https://en.wikipedia.org/wiki/dirichlet_distribution

实例

以维基百科中引用的一个例子为例,如果要将字符串(每个初始长度为1.0)切割成具有不同长度的k个片段,则可以使用这种分布,其中每个片段平均具有指定的平均长度,但允许片段的相对大小发生一些变化。

>>> s = np.random.dirichlet((10, 5, 3), 20).transpose()
>>> import matplotlib.pyplot as plt
>>> plt.barh(range(20), s[0])
>>> plt.barh(range(20), s[1], left=s[0], color='g')
>>> plt.barh(range(20), s[2], left=s[0]+s[1], color='r')
>>> plt.title("Lengths of Strings")
../../_images/numpy-random-dirichlet-1.png