

from math import log
def I(*args):
total = sum(args) + 0.0
result = 0.0
for i in args:
if i == 0:
result += 0
else:
result += i / total * log( i / total, 2)
return -result
#num表示分类的个数
def E(num, *args):
if len(args) % num != 0:
print "Error len(args)"
result = 0.0
total = sum(args)
for x in xrange(len(args) / num):
k = x * num
total_up = 0.0 + sum(args[k:k + num])
result += total_up / total * I(*args[k:k + num])
return result
def Gain(i, e):
return i - e
#取个别名
i = I
e = E
g = Gain
if __name__ == "__main__":
#for example
print i(9, 5)
print e(2, 2, 3, 4, 0, 3, 2)

本文介绍了信息熵的计算方法,并提供了Python实现。包括了单一分布的信息熵计算函数I(*args)、多分类情况下的信息熵计算函数E(num,*args),以及信息增益计算函数Gain(i,e)。这些函数可用于评估数据集的不确定性,为决策树等机器学习算法提供支持。
622

被折叠的 条评论
为什么被折叠?



