Python_熵计算实现
前言:
简单几行代码就OK了,还是比较容易的。之前有的博客是直接将每个元素的概率作为输入计算熵的,本文加入了数据概率的计算功能,这样就更加方便一步到位了。
关于熵的理论知识,可以移步我之前的博客:
熵的理解_简单例子分析
正文:
直接上代码了,这次分段上。
首先是熵的计算函数,比较简单,对应着熵的计算式一起看就很容易理解的。
import mathdef entropy(Plist):if len(Plist):result=0for x in Plist:result+=(-x)*math.log(x,2)else:print('Error loading data')result=-1return 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)
这样熵计算的功能就完成了。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
