头歌 机器学习 决策树 信息熵与信息增益

编程入门 行业动态 更新时间:2024-10-15 06:19:36

头歌 机器学习 决策树 信息熵与信息<a href=https://www.elefans.com/category/jswz/34/1757571.html style=增益"/>

头歌 机器学习 决策树 信息熵与信息增益

编程要求

根据提示,在右侧编辑器补充代码,完成calcInfoGain函数实现计算信息增益。

calcInfoGain函数中的参数:

  • feature:测试用例中字典里的feature,类型为ndarray

  • label:测试用例中字典里的label,类型为ndarray

  • index:测试用例中字典里的index,即feature部分特征列的索引。该索引指的是feature中第几个特征,如index:0表示使用第一个特征来计算信息增益。

测试说明

平台会对你编写的代码进行测试,期望您的代码根据输入来输出正确的信息增益,以下为其中一个测试用例:

测试输入: {'feature':[[0, 1], [1, 0], [1, 2], [0, 0], [1, 1]], 'label':[0, 1, 0, 0, 1], 'index': 0}

预期输出: 0.419973

提示: 计算log可以使用NumPy中的log2函数

import numpy as np
def calcInfoGain(feature, label, index):'''计算信息增益:param feature:测试用例中字典里的feature,类型为ndarray:param label:测试用例中字典里的label,类型为ndarray:param index:测试用例中字典里的index,即feature部分特征列的索引。该索引指的是feature中第几个特征,如index:0表示使用第一个特征来计算信息增益。:return:信息增益,类型float'''#这个函数用来计算信息熵,注意,这里并不要求labels必须是int数组,只要是能区别类型不同就行,它只完成一个计数操作与运算def entropy(labels):#这个函数有两个返回值,第一个返回值是数组,数组中只包含唯一值,第二个返回值是也是数组,是唯一值出现的次数unique_labels, counts = np.unique(labels, return_counts=True)#计算每一个标签出现的概率probabilities = counts / len(labels)#计算信息熵entropy = -np.sum(probabilities * np.log2(probabilities))return entropy#计算总的信息熵total_entropy = entropy(label)#求出feature特征数组第index列的唯一值数组和唯一值出现次数的数组unique_values, value_counts = np.unique(feature[:, index], return_counts=True)weighted_entropy = 0#value和count每一次从unique_values和value_counts取一个值进行for循环for value, count in zip(unique_values, value_counts):#label装的是一个布尔数组,与特征值相等的记为True,不相等的记为Falsesubset_label = label[feature[:, index] == value]#这里计算的条件熵,注意,计算熵的函数已经带负号了weighted_entropy += (count / len(feature)) * entropy(subset_label)#计算信息增益info_gain = total_entropy - weighted_entropy#返回信息增益return info_gain

更多推荐

头歌 机器学习 决策树 信息熵与信息增益

本文发布于:2024-03-04 14:37:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1709542.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:增益   信息   机器   决策树

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!