当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python numpy random.mtrand.RandomState.dirichlet用法及代码示例


用法:

RandomState.dirichlet(alpha, size=None)

从Dirichlet分布中抽取样本。

从Dirichlet分布中绘制尺寸为k的尺寸样本。 Dirichlet-distributed随机变量可以看作是Beta分布的多元概括。 Dirichlet分布是贝叶斯推断中多项式分布的共轭先验。

参数:
alpha array

分布参数(k维样本为k维样本)。

size int 或 tuple of ints, 可选参数

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

返回值:
samples ndarray,

绘制的样本,形状(大小,alpha.ndim)。

异常:
ValueError

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

注意:

Dirichlet分布是向量的分布x满足条件x_i>0\sum_{i=1}^k x_i = 1

概率密度函数pDirichlet-distributed随机向量X与...成正比

p(x) \propto \prod_{i=1}^{k}{x^{\alpha_i-1}_i},

哪里\alpha是包含正浓度参数的向量。

该方法使用以下属性进行计算:letY是一个随机向量,其分量遵循标准伽玛分布,然后X = \frac{1}{\sum_{i=1}^k{Y_i}} Y是Dirichlet-distributed

参考文献:

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

例子:

以Wikipedia中引用的示例为例,如果一个人想要将字符串(每个初始长度为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-mtrand-RandomState-dirichlet-1.png

注:本文由纯净天空筛选整理自 numpy.random.mtrand.RandomState.dirichlet。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。