为什么Python中的熵大于1?

2024-05-13 19:19:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个10000大小的graph degree listdegrees(例如:[1,14,4,14,6,1…]。我试着用这种方法计算这个列表的熵:

首先,我要找出列表中每个唯一值的概率:

uniqueDegreeList = list(set(degrees))

a = 0
for i in uniqueDegreeList:
    p = degrees.count(i) / len(degrees)
    print(p)
    a += p

输出:

0.5054494550544946
0.24577542245775422
0.12188781121887811
0.06379362063793621
0.031596840315968405
0.0150984901509849
0.007799220077992201
0.0034996500349965005
0.0024997500249975004
0.0010998900109989002
0.0008999100089991
0.00039996000399960006
0.00019998000199980003

以及:

print(a)
>> 1.0

这部分工作正常。然后我试图找到列表的熵:

S = 0
for i in uniqueDegreeList:
    p = degrees.count(i) / len(degrees)
    S -= p * math.log(p, 2)

当我打印S时,我得到1.99。熵不应该大于1,为什么我得到1.99?你知道吗


Tags: 方法in列表forlencount概率list