我需要计算生物实体共同出现的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式: