コード例 #1
0
ファイル: information.py プロジェクト: bondgeek/bgtools
def entropy(data):
    if len(data) > 1:
        lvls = levels(data)
        n = float(sum(lvls[0]))
        h = -sum(hlog(float(value)/n) for value in lvls[0] )
    else:
        h = 0.
    return h
コード例 #2
0
ファイル: information.py プロジェクト: bondgeek/bgtools
def relentropy(data1,data2):
    ''' relative entropy of data2 given data1 '''
    pairs = zip(data1,data2)
    levels1 = levels(data1)
    n1 = float(sum(levels1[0]))
    h=[]
    for b, lev in zip(levels1[0],levels1[1]):
        p = float(b)/n1
        hx = entropy( [ x[1] for x in pairs if x[0] == lev] )
        h.append( hx*p )
    return sum(h)