小弟在学习决策树剪枝,有一部分需要判断合并两个子树前后,熵的变化量
熵的计算公式和变化量的计算公式如下:
# 计算子树tb和fb在合并前后熵的变化量
delta=entropy(tb+fb)-(entropy(tb)+entropy(fb)/2)
#计算熵,rows是一个数据表,uniquecounts计算该表最后一列每种值出现的次数,是一个dict
def entropy(rows):
from math import log
log2 = lambda x:log(x)/log(2)
results = uniquecounts(rows)
ent = 0.0
for r in results.keys():
p = float(results[r])/len(rows)
ent = ent-p*log2(p)
return ent
计算熵变化量的那里,为啥有个除以2?
我觉得应该是
delta=entropy(tb+fb)-(entropy(tb)+entropy(fb))