开发者

Python实现计算信息熵的示例代码

开发者 https://www.devze.com 2022-12-27 09:27 出处:网络 作者: 顾城沐心
目录一:数据集准备二:信息熵计算三:完整源码分享一:数据集准备 如博主使用的是:
目录
  • 一:数据集准备
  • 二:信息熵计算
  • 三:完整源码分享

一:数据集准备

如博主使用的是:

多层感知机(MLP)实现考勤预测二分类任务(sklearn)对应数据集

导入至工程下编程客栈

Python实现计算信息熵的示例代码

二:信息熵计算

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

Python实现计算信息熵的示例代码

三:完整源码分享

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计算信息熵内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号