Python_熵计算实现

前言:

简单几行代码就OK了,还是比较容易的。之前有的博客是直接将每个元素的概率作为输入计算熵的,本文加入了数据概率的计算功能,这样就更加方便一步到位了。

关于熵的理论知识,可以移步我之前的博客:

熵的理解_简单例子分析

正文:

直接上代码了,这次分段上。

首先是熵的计算函数,比较简单,对应着熵的计算式一起看就很容易理解的。

import math

def entropy(Plist):
    if len(Plist):
        result=0
        for x in Plist:
            result+=(-x)*math.log(x,2)
    else:
        print('Error loading data')
        result=-1
    return result

接下来是输入量的概率计算函数,在测试脚本中直接写进主函数里了,最后返回的是一个字典。

x=[1,2,3,4,5]
count ={} #空字典
num = len(x) 
for i in x:
    count[i] = count.get(i,0) + (1/len(x))   #count.get(a,b):返回字典中键a对应的值,如没有键a,建立a并以默认b作为返回值
    #利用之前建立的空字典储存每个值出现的概率
print(count)

字典长这个样子:

{1: 0.2, 2: 0.2, 3: 0.2, 4: 0.2, 5: 0.2}

键是输入列表中的每个元素,后面的值是对应出现的概率。

最后就是计算熵了,把字典的值读出来作为计算熵函数的输入就行。

entro=[]
for a in count.values():
    entro.append(a)

entro=[]
ent=entropy(entro)

这样熵计算的功能就完成了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值