AI3 决策树的生成与训练-信息熵的计算

该博客介绍了如何使用Python计算数据集的信息熵。信息熵是评估数据集纯度的指标,用于决策树的学习过程。文章首先解释了信息熵的计算公式,然后展示了如何通过遍历数据集并计算各类样本比例来求得信息熵。最后,给出了一个具体的数据集示例,演示了如何读取数据并计算其信息熵。这个例子涉及了金融领域的信用卡审批决策,数据集包含四个特征:教育程度、是否有车、是否有正式工作和征信情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

决策树是非常经典的机器学习模型,以决策树为基模型的集成学习模型(XGBoost、GBDT 等)在工业界得到了极为广泛的应用。决策树有三种常见的启发式生成标准,信息增益就是其中之一。计算某一特征的信息增益主要分为两步,第一步是计算数据集的信息熵,信息熵可以表示为,其中代表的是属于某一类的样本个数,D 是整个数据集的样本数量,K 为类别数量。第二步是根据信息熵计算每个特征的经验条件熵。特征的信息增益即为信息熵和经验条件熵的差。现有一数据集,有 4 个特征,分别为教育程度、是否有车、是否有正式工作和征信情况,通过这 4 个特征决策是否予以审批信用卡,数据已经通过 dataSet 给出。其中 dataSet 每行的前 4 列依次代表上述特征的取值,最后一列代表对应的 label 标签。

要求实现 calcInfoEnt 功能,数据集从当前路径下 dataSet.csv读取,计算在给定数据集的情况下,数据集的信息熵,信息熵用 infoEnt 进行表示,数据类型为 float,将 infoEnt 作为函数返回值。计算逻辑参考题目描述中给出的公式。

其中dataSet.csv的示例数据集如下所示:

 

# -*- coding: UTF-8 -*-
from math import log
import pandas as pd

dataSet = pd.read_csv('dataSet.csv', header=None).values.tolist()


def calcInfoEnt(dataSet):
    numEntres = len(dataSet)
    # code start here
    labelCounts={}
    for featVec in dataSet:
        currentLabel=featVec[-1]
        if currentLabel not in labelCounts.keys():
            labelCounts[currentLabel]=0
        labelCounts[currentLabel]+=1
    infoEnt=0.0
    for key in labelCounts:
        prob=float(labelCounts[key])/numEntres
        infoEnt-=prob*log(prob,2)
    return infoEnt
    # code end here
    # 返回值 infoEnt 为数据集的信息熵,表示为 float 类型


if __name__ == '__main__':
    print(calcInfoEnt(dataSet))
    # 输出为当前数据集的信息熵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值