信息理论测量:熵计算

时间:2017-04-14 22:02:06

标签: python statistics entropy information-theory cross-entropy

我有一个由数千行组成的语料库。为简单起见,我们将语料库视为:

Today is a good day
I hope the day is good today
It's going to rain today
Today I have to study

如何使用上述语料库计算熵?熵的公式如下:

enter image description here

这是我到目前为止的理解:Pi指的是个体符号计算为frequency(P) / (total num of characters)的概率。我不明白的是总和?我不确定总和如何在这个特定的公式中起作用?

我正在使用Python 3.5.2进行统计数据分析。如果有人可以帮助我使用熵计算的代码片段,那将是非常好的。

1 个答案:

答案 0 :(得分:1)

您可以使用SciPy https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.entropy.html来计算熵。

或者写下这样的东西:

import math
def Entropy(string,base = 2.0):
    #make set with all unrepeatable symbols from string
    dct = dict.fromkeys(list(string))

    #calculate frequencies
    pkvec =  [float(string.count(c)) / len(string) for c in dct]

    #calculate Entropy
    H = -sum([pk  * math.log(pk) / math.log(base) for pk in pkvec ])
    return H


print(Entropy("Python is not so easy"))

返回3.27280432733。