4
我使用pandas
和numpy
實施python中mutual information公式計算蟒蛇互信息返回NaN
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
。
什麼是正確的解決方法?
難道你不能檢查p中是否有零,並且在這種情況下返回你對這種情況的期望值? – timgeb
我不知道什麼是零概率熵 –
也許這裏有人知道 –