Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算联合分布的熵?_Python_Arrays_Scipy_Entropy - Fatal编程技术网

Python 如何计算联合分布的熵?

Python 如何计算联合分布的熵?,python,arrays,scipy,entropy,Python,Arrays,Scipy,Entropy,有两个随机变量X和Y以及它们的联合概率Posterior\p(离散,2D数组),我使用得到了后验概率的熵,它返回一个维度为len(X)的数组,因为默认轴=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

有两个随机变量
X
Y
以及它们的联合概率
Posterior\p
(离散,2D数组),我使用得到了后验概率的熵,它返回一个维度为
len(X)
的数组,因为默认轴=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)
它们之间的区别是什么?我如何从联合密度中得到总熵,该密度应该是一个值,使用?

计算离散分布的熵。这些值应该是概率,而不是概率密度。(事实上,如果输入中的值之和不是1,则值将按比例缩放,使之和为1。这在文档字符串中有提及。)如果这是您所拥有的(例如,二维数组
p
持有双变量离散分布的联合分布概率)您只需将展平的数组传递给
scipy.stats.entropy
;e、 g.
熵(p.ravel(),base=2)


函数
scipy.stats.entropy
计算的数学量与scipy连续分布(如
scipy.stats.multivariable\u normal
entropy
方法计算的数学量不同。
方法计算分布的微分熵。有关通过scipy分布的
scipy.stats.entropy
计算的离散熵与通过scipy分布的
entropy
方法计算的差分熵之间的差异的讨论,请参见。仅供参考:
scipy.stats.entropy
计算(离散),而
多元正态。熵
计算。它们不一样。你到底想要哪一个?@WarrenWeckesser我想计算联合分布的熵。因为我使用
meshgrid
来定义支持,所以联合分布的pdf实际上是一个2D数组。当我尝试
entropy
时,它返回长度为
X
的一维数组,而不是单个值。但是根据定义,熵应该是支撑空间上
P(x,y)*log1/(P(x,y))
的总和,这是一个单一值?