决策树-计算信息熵

#计算含有缺失值的信息熵, 不同之处是每个样本带有权重
''' 
weight 代表每个样本的权重
d_v 表示包含数据的 DataFrame
label 表示标签列的名称,默认为好瓜。
'''
def calEntroWithNull(weight,d_v:pd.DataFrame,label='好瓜'):
    #获取标签列中的唯一值(分类列表)
    classlist = d_v[label].unique()
    #初始信息熵=0
    ret_entro = 0
    #过类目表
    for k in classlist:
        #分类的概率
        prob_k = sum(weight[(d_v[label]==k)]) / sum(weight)
        # print('p_k : ',sum(weight[(d_v[label]==k)]),'/',sum(weight),'=',prob_k)
        ret_entro -= prob_k*np.log2(prob_k)

    return ret_entroA

这段代码是用来计算在给定数据集中,针对某一特征(比如'好瓜'),以及对应的权重,计算其信息熵。信息熵是用来衡量数据的不确定性的指标,当信息熵越高时,数据的不确定性也越大。

具体来说,这段代码做了以下几件事情:

  1. 获取特征列中的唯一值(分类列表)
  2. 遍历每个分类,计算该分类的概率
  3. 根据公式计算信息熵
  4. 返回计算得到的信息熵值

其中,参数weight是每个样本的权重,d_v是包含数据的DataFrame,label是指定的特征列名(默认为'好瓜')。在代码中,使用了numpy库中的log2函数来计算对数。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值