首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >互信息香农熵

互信息香农熵
EN

Stack Overflow用户
提问于 2013-09-16 07:42:50
回答 1查看 4.9K关注 0票数 7

我有一些有关一些物业的统计数字,例如:

代码语言:javascript
复制
1st iter : p1:10 p2:0 p3:12 p4:33 p5:0.17 p6:ok p8:133 p9:89
2nd iter : p1:43 p2:1 p6:ok p8:12 p9:33
3rd iter : p1:14 p2:0 p3:33 p5:0.13 p9:2
...

(p1 -> number of tries, p2 -> try done well, p3..pN -> properties of try).

我需要计算每一项财产的信息量。经过一定的量化程序(对于ex )。)要使所有输入数字都在同一级别上,输入文件开始如下所示:

代码语言:javascript
复制
p0: 4 3 2 4 5 5 6 7
p3: 4 5 3 3   
p4: 5 3 3 2 1 2 3 
...

在哪里p(0) = funct(p1,p2)

不是每个输入行都得到所有的pK,所以是len(pk) <= len(p0)

现在我知道如何通过每条线的Shannon熵来计算每个属性的熵。我需要从这里算出相互的信息。

由于长度不同,互信息I(p0,pK)的联合熵计算受阻。

我在计算像这样一个元素的熵:

代码语言:javascript
复制
def entropy(x):
    probs = [np.mean(x == c) for c in set(x)]
    return np.sum(-p * np.log2(p) for p in probs)

因此,对于联合,我需要使用product生成输入数组x,并使用zip(p0,pk)而不是set(x)

EN

回答 1

Stack Overflow用户

发布于 2013-09-16 15:10:04

维基百科文章的正式定义部分拿出公式。他们称它为信息增益,但这与相互信息是一样的。为了计算包含在此公式中的样本的熵,请从维基百科文章的定义部分提取公式。

因此,首先计算整个数据集的熵,然后从它中减去当您知道有关的分布的值时所留下的熵。

使用numpy.histogramdd()可以在Python中计算多维直方图.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18822727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档