python计算熵,条件熵 互信息
信息熵可以用来衡量一条信息的复杂程度。通俗的理解就是这个事情的不确定性。不确定性越大,信息熵的值就越大;否则会更小。
关于随机事件x,事件x发生的概率用pp _ { x } px表示,随机事件x的信息熵可以表示为:
h(x)=I=0n p x l o g p x { \ large h(x)=-\sum_{i=0}^{n}p_{x} logp _ { x } } h(x)=I=0n px log px
用python实现信息熵:
#计算信息熵,数据是系列对象def get熵(data):如果不是I instance(data,PD . core . series . series):s=PD . series(data)PRT _ ary=data . group by(data)。计数()。Values/float (len (data))返回sum (-(np.log2 (PRT _ ary) * PRT _ ary))公式定义如下:
h(yx)=x p x h(yx=x){ \大h(yx)=\sum_{x}^{} p _ { x } h(y x=x)} h(yx)=x px h(yx=x)
Python实现条件熵的代码如下:
def getcondentroy(data,xname,yname): xs=data[xname]。unique() ys=data[yname]。unique() p_x=data[xname]。value _ counts()/data . shape[0]ce=0 for x in xs:ce=p _ x[x]* get entropy(data[data[xname]==x][yname])print(str(x): str(p _ x[x]* get entropy(data[data[xname]==x][yname]))返回ce
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。