我需要計算生物實體共同出現的PMI分數,例如, Gene A - Gene B
或Gene C - Disease A
。已從Pubtator中提取了共現。我使用Python 3.用於從計數:數據幀或矩陣計算PMI的策略
對於一組文檔,我已經通過共現類別提取了所有實體的各個計數freq(x)
和freq(y)
,例如, Gene-Gene
或Gene-Disease
,並且我有實體對freq(x,y)
的同現計數。所有計數均存儲在Dict
中。
什麼是從原始計數計算逐點互信息(PMI)分數的最佳方法:
- 創建兩個數據幀(一個用於個人計數和一個共生計數)
- 創建兩個矩陣? (同上)
- 另一種方法?
考慮到一組數據有3列:entity, category, count
,而另一組有4列:entity_a, category, entity_b, count
其中類別表示同現類別。我需要用於個體實體計數的類別,因爲如果我使用它們的總計數,它會扭曲給定同現類型的結果。
我試過數據框的方法,但不知道如何創建一個新的PMI列,計算結果使用兩個不同的數據框架(DFs),因此我想也許矩陣方法可能會更好?如果是這樣,爲什麼?數據的
實例時轉化成的DF:
df1.head():
ent rel count 177 5197 Gene_Gene 2 176 56744 Gene_Gene 2 175 12766 Gene_Gene 2 174 3091 Gene_Gene 2 173 3162 Gene_Gene 2
df2.head():
ent_a rel ent_b count 247 5197 Gene_Gene 56744 1 246 12766 Gene_Gene 5197 1 245 12766 Gene_Gene 56744 1 244 3091 Gene_Gene 3162 1 243 3091 Gene_Gene 54583 1
的PMI式: