📜  Python中的 numpy.random.dirichlet()(1)

📅  最后修改于: 2023-12-03 15:04:33.651000             🧑  作者: Mango

Python中的 numpy.random.dirichlet()介绍

numpy.random.dirichlet()是numpy模块中随机数生成器中的一个函数,用于生成具有Dirichlet分布的随机数组。

Dirichlet分布

Dirichlet分布是一种概率分布,常用于多元分布中的参数估计。它是一个概率分布族,取决于K个正实数参数α₁,...,αk。 对于随机向量θ=(θ₁,...,θk),它可以看做是一个K维变量,它的概率密度函数为:

dirichlet

在Dirichlet分布中,参数α1,α2,...,αk由用户自己定义。当αi=1时,Dirichlet分布退化成一般均匀分布。当所有的αi值相等时,分布成为式子与Beta分布相同。

numpy.random.dirichlet()用法

numpy.random.dirichlet(alpha, size=None)函数接收两个参数:

  • alpha: 一个一维数组。代表从Dirichlet分布中采样时的K个参数α₁, α₂..., αk。
  • size: 一个整数或一维数组。生成的随机数的形状。

函数返回一个大小为size的ndarray,包含了从Dirichlet分布中采样的值。每个采样值是一个长度为K的向量,且满足向量中所有元素的和为1。

代码实例
import numpy as np

alpha = [1, 2, 3]  
size = (2, 3)

samples = np.random.dirichlet(alpha, size)  
print(samples)

运行结果:

[[[0.2276758  0.36412174 0.40820246 ]
  [0.09129198 0.13322425 0.77548377]
  [0.15740528 0.379109   0.46348572]]

 [[0.22500693 0.25212254 0.52287053]
  [0.27569393 0.24528408 0.47902299]
  [0.08734388 0.70521401 0.2074421 ]]]

上面的示例将从具有Dirichlet分布的随机数组进行两次采样,每次生成一个形状为(3,)的向量,长度为3的每个向量中的元素自动规样本取样值的总和是1。