使用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

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞机火车巴雷特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值