使用Python计算离散随机变量的熵(Entropy)

一、离散随机变量

        设\{x_i\}为离散型随机变量\xi的所有可能值;而p(x_i)\xix_i的概率,即

P(\xi = x_i)=p(x_i), i=1,2,3,...

\{p(x_i), i=1,2,3,...\}称为(离散)随机变量\xi的概率分布,而且它满足下面的条件:

p(x_i)\geqslant 0, i=1,2,3,...

\sum_{i=1}^{\infty}p(x_i)=1

        在现实中,通常这个随机变量\xi的取值个数是可数的。这里假设随机变量\xi的取值个数为N个,那么随机变量\xi的概率分布可以表示为

\{p(x_1), p(x_2),...,p(x_N)\}

        可见,这是一个集合。而在Python中,可以这认为是一个列表(list)。换句话说,在时,我们需要传入一个list这样的数据格式。

二、熵的计算公式

        假设具有N个取值个数的随机变量\xi的概率分布为\{p(x_1), p(x_2),...,p(x_N)\},那么随机变量\xi的熵被定义为

\mathbb{H}(\xi)\triangleq -\sum_{i=1}^{N}p(x_i)\log_2{p(x_i)}

通常使用以2为底的对数函数。

三、使用scipy.stats.entropy计算

        scipy.stats.entropy提供了一种熵的计算方法,其中的对数函数的底默认为自然数e,也可以指定具体的底。调用方法为

from scipy.stats import entropy

entropy_a = entropy([0/9, 0/9, 9/9])
entropy_b = entropy([1/999, 1/999, 997/999])
entropy_c = entropy([0/9, 1/9, 8/9])
entropy_d = entropy([1/9, 3/9, 5/9])
entropy_e = entropy([1/3, 1/3, 1/3])
entropy_f = entropy([1/3, 1/3, 1/3], base=2)

print(entropy_a)
print(entropy_b)
print(entropy_c)
print(entropy_d)
print(entropy_e)
print(entropy_f)

四、计算结果

0.0
0.01582733355150361
0.34883209584303193
0.9368883075390159
1.0986122886681096
1.584962500721156

五、参考

        李贤平,概率论基础[M],高等教育出版社

        Kevin P. Murphy,Machine Learning A Probabilistic Perspective,The MIT Press

        scipy.stats.entropy — SciPy v1.8.1 Manual

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
上一篇 2022年5月23日 下午2:11
下一篇 2022年5月23日 下午2:17

相关推荐

本站注重文章个人版权,不会主动收集付费或者带有商业版权的文章,如果出现侵权情况只可能是作者后期更改了版权声明,如果出现这种情况请主动联系我们,我们看到会在第一时间删除!本站专注于人工智能高质量优质文章收集,方便各位学者快速找到学习资源,本站收集的文章都会附上文章出处,如果不愿意分享到本平台,我们会第一时间删除!