2017-04-14 118 views
-2

我有一個由數千行組成的語料庫。爲了簡單起見,讓我們考慮語料庫爲:信息理論測量:熵計算

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

這是我的理解至今:皮指其爲frequency(P)/(total num of characters)計算的個人標誌的概率。我不明白的是總結?我不確定這個具體的公式是如何進行求和的?

我正在使用Python 3.5.2進行統計數據分析。如果有人能夠幫助我用熵計算的代碼片段,那將是非常好的。

+0

必須有一個'numpy'方法來執行一個數組函數的總和。 – Barmar

回答

0

您可以使用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。