假设训练集合包含以下10个元素:
其中s、m和l分别表示小、中和大。
设L、F和H表示日志密度、好友密度、是否使用真实头像,下面计算各属性的信息增益。
import math
#为了方便计算,我们定义一个计算信息值的函数,参数P为选择该分类的概率
def info_value(p):
#try可以防止当p为0时,log2(p)计算报错
try:
result = -math.log2(p)
except:
result = 0
finally:
return result
#观察我们需要判断标签项(即账号是否为真的列)
# no 3个 p = 0.3
# yes7个 p = 0.7
#计算整体信息熵
info_D =