我已经在 python 中使用和实现了互信息公式pandas
numpy
def mutual_info(p):
p_x=p.sum(axis=1)
p_y=p.sum(axis=0)
I=0.0
for i_y in p.index:
for i_x in p.columns:
I+=(p.ix[i_y,i_x]*np.log2(p.ix[i_y,i_x]/(p_x[i_y]*p[i_x]))).values[0]
return I
但是,如果一个单元格p
的概率为零,np.log2(p.ix[i_y,i_x]/(p_x[i_y]*p[i_x]))
则为负无穷大,整个表达式乘以零并返回NaN
。
解决这个问题的正确方法是什么?