使用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日
下一篇 2022年5月23日

相关推荐