博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[置顶] 信息熵的计算
阅读量:6942 次
发布时间:2019-06-27

本文共 959 字,大约阅读时间需要 3 分钟。

最近在看决策树的模型,其中涉及到信息熵的计算,这里东西是由信号处理中来的,理论部分我就不再重复前人的东西了,下面给出两个简单的公式:

当然学习过信号与系统的童鞋一定觉得这不是香农提出的东西吗?O(∩_∩)O~没错,就是这个东西,只不过我们用在了机器学习上,好了下面就看代码吧,这些代码也很简单,我们知道信息熵越大表示所含信息量越多。

下面是计算信息熵的方法,以及测试代码:

 

import math def cacShannonEnt(dataset):    numEntries = len(dataset)    labelCounts = {}    for featVec in dataset:        currentLabel = featVec[-1]        if currentLabel not in labelCounts.keys():            labelCounts[currentLabel] = 0        labelCounts[currentLabel] +=1            shannonEnt = 0.0    for key in labelCounts:        prob = float(labelCounts[key])/numEntries        shannonEnt -= prob*math.log(prob, 2)    return shannonEnt    def CreateDataSet():    dataset = [[1, 1, 'yes' ],                [1, 1, 'yes' ],                [1, 0, 'no'],                [0, 1, 'no'],                [0, 1, 'no']]    labels = ['no surfacing', 'flippers']    return dataset, labels    myDat,labels = CreateDataSet()print(cacShannonEnt(myDat))

第一个函数式计算信息熵的,第二个函数是创建数据的。

 

 

 

 

你可能感兴趣的文章
转python调用Go代码
查看>>
红黑树(一)之原理和算法的详细分析【转】
查看>>
undefined reference to typeinfo - C++ error message
查看>>
springmvc: 普通list数据输出json
查看>>
8127 timeout!!! 搞死人啊
查看>>
Android开发 设置开机自动启动
查看>>
高德地图iOS SDK限制地图的缩放比例
查看>>
【组件化开发】前端进阶篇之如何编写可维护可升级的代码
查看>>
Node.js node主文件找不到时报出的Error:Cannot find module异常
查看>>
让SQL Server Compact支持 Membership, Role and Profile provider
查看>>
一个编译器的实现2——从文法到LL(1)分析表的概念和算法
查看>>
报表系统结构优化之中间数据外置
查看>>
《JAVA与模式》之门面模式
查看>>
vim/vi的文件内、跨文件复制粘贴操作、替换操作
查看>>
java命令执行jar文件
查看>>
python get class base name
查看>>
论这场云盘大战,以及各网盘的优劣
查看>>
怪异的JavaScript系列(三)
查看>>
辅助模式最终考验的是想象力,先来看看怎么用!| Accessibility
查看>>
TiDB 源码阅读系列文章(九) Hash Join
查看>>