返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现计算信息熵的示例代码
  • 106
分享到

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

Python计算信息熵Python 信息熵 2022-12-26 15:12:29 106人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

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

一:数据集准备

如博主使用的是:

多层感知机(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 currentLabel 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)实现考勤预测二分类任务(sklearn)对应数据集  信息熵为0.5563916622348017

三:完整源码分享

from math import log
import pandas as pd
 
dataSet = pd.read_csv('dataSet.csv', 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 为数据集的信息熵,表示为 float 类型
 
 
if __name__ == '__main__':
    # 输出为当前数据集的信息熵
    print(calcInfoEnt(dataSet))

到此这篇关于python实现计算信息熵的示例代码的文章就介绍到这了,更多相关Python计算信息熵内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现计算信息熵的示例代码

本文链接: https://lsjlt.com/news/175866.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作