numpy.random.RandomState.dirichlet¶
方法
-
RandomState.
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")