美文网首页
简略计算香农信息熵(Shannon Entropy)

简略计算香农信息熵(Shannon Entropy)

作者: CristinaXu | 来源:发表于2017-09-14 16:09 被阅读0次

    先推荐一个信息熵计算器

    http://www.shannonentropy.netmark.pl/

    输入你想计算的内容:二进制代码或英文字母短语语句(e.g.1100101, Lorem ipsum)

    计算器会按这个公式计算

    我这次计算短语:“have fun”  (注意,此处有空格)

    这是短语中所含符号列表

    Alphabet of symbols in the string: a e f h n u v 还有空格

    计算符号出现的概率/频率

    Frequencies of alphabet symbols:

    0.125 ->空格

    0.125 -> a

    0.125 -> e

    0.125 -> f

    0.125 -> h

    0.125 -> n

    0.125 -> u

    0.125 -> v

    因为每个符号只出现了一次,所以用1/8简单来算。但严格来说,26个字母出现的概率并不是相同的。

    之后把各个符号的概率带入公式,得出结果

    H(X) =-[(0.125log20.125)+(0.125log20.125)+(0.125log20.125)+(0.125log20.125)+

    (0.125log20.125)+(0.125log20.125)+(0.125log20.125)+(0.125log20.125)]

    H(X) =-[(-0.375)+(-0.375)+(-0.375)+(-0.375)+(-0.375)+(-0.375)+(-0.375)+(-0.375)]

    H(X) =-[-3]

    H(X) =3

    这一步的python代码

    from math import log

    def calcShannonEnt(probList):

        shannonEnt=0.0

        for prob in probList:

            shannonEnt=shannonEnt-prob*log(prob,2)

        return shannonEnt

    ########################

    pList=[0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125]#8个符号的概率

    entropy=calcShannonEnt(pList)

    print entropy

    其实scipy有现成计算熵函数,但是装起来比较麻烦,等不及的话就自己写啦。

    上述例子用2做log的底数,计算单位是bit.

    其它底数对应的单位:

                e - nat

              10 - hartley/ban/dit



    之后又计算了米兔积木机器人每个积木零件的信息熵

    以这一款造型为例


    以下是所需零件列表

    零件编号及数量

    现在可求得每个零件在套内出现的概率

    将概率一列输入python代码中得出每个零件的信息熵(bit)

    零件数:981           H: 5.3

    可与乐高历代套装零件的信息熵做一下对比

    来源 《The entropy of LEGO》Andrew Crompton

    相关文章

      网友评论

          本文标题:简略计算香农信息熵(Shannon Entropy)

          本文链接:https://www.haomeiwen.com/subject/nfsdsxtx.html