【发布时间】:2018-06-25 11:26:51
【问题描述】:
有两个随机变量X和Y以及它们的联合概率Posterior_P(离散,二维数组),我通过使用scipy.stats.entropy得到了后验概率的熵,它返回一个维度为@的数组987654328@ 因为默认轴 = 0。我对熵完全陌生,所以如果我混淆了某些定义,请纠正我。
我创建了一个相当简单的例子来作证:
x = np.arange(-2,2,0.01)
y = np.arange(-2,2,0.01)
X,Y = np.meshgrid(x,y)
# support area
sup = np.dstack((X,Y))
distribution = multivariate_normal(mean=[0,0],cov=[[1,0],[0,1]])
# This is what I want, returns a value = 2.83
entropy_0 = distribution.entropy()
# calculate from 2-D array PDF
# returns an array [8.4605,8.4605,...,8.4605] with a size of len(X)
pdf = distribution.pdf(sup)
entropy_1 = entropy(pdf,base=2)
它们之间有什么区别?如何从联合密度中获得整体熵,这应该是使用 scipy.stats.entropy 的值?
【问题讨论】:
-
仅供参考:
scipy.stats.entropy计算(离散)entropy,multivariate_normal.entropy计算 differential entropy。它们是不相同的。你真正想要哪一个? -
@WarrenWeckesser 我想计算联合分布的熵。因为我用
meshgrid来定义支撑,所以联合分布的pdf其实是一个二维数组。当我尝试entropy时,它返回一个长度为X而不是单个值的一维数组。但是根据定义,熵应该是P(x,y)*log1/(P(x,y))在支持空间上的总和,这将是一个单一的值?
标签: python arrays scipy entropy