2-1.任意摘录一段文字,统计这段文字中所有字符的相对频率。假设这些相对频率就是这些字符的频率,请计算其分布的熵:
摘录的话:AAABBBBAABBCBDBDFDFFFDCDCDE
total:27
A:5 B:8 C:3 D:6 E:1 F:4
现在可得到字符的概率为:5/27,8/27,1/9,2/9,1/27,4/27
熵的计算公式为 注意0log2(0) = 0
H(X) = 2.389172576943942
import numpy as np
def ComputEntropy(probX):
sum = 0.0
for i in probX:
sum += i*np.log2(i)
return abs(sum)
def main():
probX = [5/27,8/27,1/9,2/9,1/27,4/27]
print(ComputEntropy(probX))
pass
if __name__ == '__main__':
main()
2-2.任意取另外一段文字,按上述同样的方法计算字符分布概率,然后计算两段文字中字符分布的KL距离。
摘录的话:AAAACCCCDDDDEEEBDDDFFF