def calcShannonEnt(dataSet): # 返回数据集行数,即样本数量 numEntries = len(dataSet) # 保存每个标签(label)出现次数的字典 labelCounts = {} # 对每组特征向量进行统计 for featVec in dataSet: currentLabel = featVec[-1] # 提取标签信息,最后一列数据,即响应变量的值,返回int类型 if currentLabel not in labelCounts.keys(): # 如果标签没有放入统计次数的字典,添加进去 labelCounts[currentLabel] = 0 labelCounts[currentLabel] += 1 # label计数 shannonEnt = 0.0 # 经验熵 # 计算经验熵 for key in labelCounts: prob = float(labelCounts[key]) / numEntries # 选择该标签的概率,labelCounts[key]是引用key对应的value值 shannonEnt -= prob * log(prob, 2) # 利用公式计算 return shannonEnt # 返回经验熵
时间: 2023-06-08 09:06:11 浏览: 148
对于返回值为DataSet的处理
5星 · 资源好评率100%
这是一个Python中的函数,用于计算给定数据集的香农熵。香农熵是用于衡量数据集的无序程度或随机性的指标。它越高,说明数据集越杂乱无章,反之则说明数据集越有序。该函数接受一个数据集作为参数,并返回对该数据集进行计算之后的香农熵值。
阅读全文