决策树学习-计算数据集的信息熵

 #计算信息熵
def calEntro(dataset):
    dataset = np.array(dataset)
    data_len = len(dataset)
    #labelCount记录各类样本数据的数量
    labelCount = {}

    for row in dataset:
        cur_label = row[-1]
        if cur_label not in labelCount.keys():
            labelCount[cur_label] = 0
        labelCount[cur_label] += 1

    result = 0
    for key in labelCount.keys():
        prob = labelCount[key]/data_len
        result -= prob*math.log2(prob)
    return result

这段代码是用来计算数据集的信息熵的函数。信息熵是用来衡量数据集的不确定性,即数据集中包含的信息量。以下是对代码的解释:

  1. def calEntro(dataset)::定义了一个名为 calEntro 的函数,该函数接受一个数据集 dataset 作为输入参数。

  2. dataset = np.array(dataset):将输入的数据集转换为 NumPy 数组,以方便处理。

  3. data_len = len(dataset):获取数据集的长度,即数据集中样本的数量。

  4. labelCount = {}:初始化一个空字典 labelCount,用于记录数据集中各类别样本的数量。

  5. 遍历数据集中的每一行:

    • cur_label = row[-1]:获取当前样本的标签值(假设标签值在每行的最后一个位置)。
    • if cur_label not in labelCount.keys(): labelCount[cur_label] = 0:如果当前标签值不在 labelCount 字典的键中,则将其初始化为 0。
    • labelCount[cur_label] += 1:统计当前标签值在数据集中出现的次数。
  6. 计算信息熵:

    • result = 0:初始化信息熵的结果为 0。
    • 遍历 labelCount 字典中的每个键(类别):
      • prob = labelCount[key]/data_len:计算当前类别在数据集中的概率。
      • result -= prob*math.log2(prob):根据信息熵的公式,累加计算信息熵的值,其中 math.log2(prob) 表示以2为底的对数运算。
    • 最终返回计算得到的信息熵值 result

总体来说,这段代码的功能是通过遍历数据集中的标签值,计算数据集的信息熵,并返回信息熵的值。信息熵值越高,表示数据集的不确定性越大。

相关推荐

  1. 决策学习-计算数据信息

    2024-03-27 10:48:01       43 阅读
  2. 决策-计算信息

    2024-03-27 10:48:01       36 阅读
  3. 决策相关算法_ID3_C45_信息_剪枝

    2024-03-27 10:48:01       59 阅读
  4. 基于学习决策

    2024-03-27 10:48:01       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 10:48:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 10:48:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 10:48:01       82 阅读
  4. Python语言-面向对象

    2024-03-27 10:48:01       91 阅读

热门阅读

  1. c# 执行动态编译的方法

    2024-03-27 10:48:01       42 阅读
  2. C语言动态分配数组

    2024-03-27 10:48:01       44 阅读
  3. rust - 动态构造文件名字符串

    2024-03-27 10:48:01       47 阅读
  4. elementui的tree默认高亮显示无效的问题

    2024-03-27 10:48:01       40 阅读
  5. @JsonFormat(pattern = “yyyy-MM-dd“) 年月日用法

    2024-03-27 10:48:01       34 阅读
  6. 怎么实现redis的高可用

    2024-03-27 10:48:01       44 阅读
  7. Knight Moves(UVA 439)

    2024-03-27 10:48:01       47 阅读
  8. 4.4 call far ptr和retf指令,本质是栈、goto指令

    2024-03-27 10:48:01       39 阅读
  9. Hive的安装

    2024-03-27 10:48:01       46 阅读
  10. unity pivot和center的区别

    2024-03-27 10:48:01       54 阅读
  11. 在OpenCV的detectMultiScale方法中,scaleFactor参数

    2024-03-27 10:48:01       40 阅读
  12. VR虚拟仿真在线模拟旅游专业情景

    2024-03-27 10:48:01       46 阅读