我有一个由数千行组成的语料库。为简单起见,我们将语料库视为:
Today is a good day
I hope the day is good today
It's going to rain today
Today I have to study
如何使用上述语料库计算熵?熵的公式如下:
这是我到目前为止的理解:Pi指的是个体符号计算为frequency(P) / (total num of characters)
的概率。我不明白的是总和?我不确定总和如何在这个特定的公式中起作用?
我正在使用Python 3.5.2
进行统计数据分析。如果有人可以帮助我使用熵计算的代码片段,那将是非常好的。
答案 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。