Python实现计算信息熵的示例代码
目录
- 一:数据集准备
- 二:信息熵计算
- 三:完整源码分享
一:数据集准备
如博主使用的是:
多层感知机(MLP)实现考勤预测二分类任务(sklearn)对应数据集
导入至工程下编程客栈

二:信息熵计算
1 导包
from math import log import pandas as pd
2 读取数据集
dataSet = pd.read_csv('dataSet.csv', header=None).values.tolist()
3 数据统计
numEntries = len(dataSet) # 数据集大小
labelCounts = {}
for featVec in dataSet: #
currentLabel = featVec[-1] # 获取分类标签
if currentLabandroidel not in labelCounts.keys(): labelCounts[currentLabel] = 0 # 字典值不等于0???
labelCounts[currentLabel] += 1 # 每个类中数据个数统计
4 信息熵计算
infoEnt = 0.0
for key in labelCounts: # 信息熵计算
prob = float(labelCounts[key]) / numEntries
infoEnt -= prob * log(prob, 2)
return infoEnt
# 返回值 infoEnt 为数据集的信息熵,表示为 float 类型
测试运行,得到 多层感知机(MLP)实现考勤预测二分类任务(skle开发者_C入门arn)对应数据集 信息熵为0.5563916622348017

三:完整源码分享
from math import log
import pandas as pd
dataSet = pd.read_csv('dataSet.c编程客栈sv', header=None).values.tolist()
def calcInfoEnt(dataSet):
numEntries = len(dataSet) # 数据集大小
labelCounts = {}
for featVec in dataSet: #
currentLabel = featVec[-1] # 获取分类标签
if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0 # 字典值不等于0???
labelCounts[currentLabel] += 1 # 每个类中数据个数统计
infoEnt = 0.0
for key in labelCounts: # 信息熵计算
prob = float(labelCounts[key]) / numEntries
infoEnt -= prob * log(prob, 2)
return infoEnt
# 返回值 infoEnt 为数据集的信息熵,表python示为 float 类型
if __name__ == '__main__':
AjGUP # 输出为当前数据集的信息熵
print(calcInfoEnt(dataSet))
到此这篇关于python实现计算信息熵的示例代码的文章就介绍到这了,更多相关Python计算信息熵内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
加载中,请稍侯......
精彩评论