Я использую Pyspark для вычисления PMI (Point Mutual Infomation).И я нашел код Scala в
Вычисление точечной взаимной информации в Spark
Я уже написал версию Python из исходного кода, написанного Delip.
Как перевести код Scala, написанный emeth, в версию Python?
Вот мой код:
counts = RDD["String", int]
twocounts = RDD["String1String2", int]
MI = twocounts.map(lambda x: (x[0][0], (x[0], x[1]))) \
.join(counts) \
.map(lambda x: (x[1][0][0][1], x[1]) ) \
.join(counts) \
.map(lambda x: (x[1][0][0][0], x[1][0][0][1], x[1][0][1], x[1][1])) \
.map(lambda x: (x[0], computeMI(x[1], x[2], x[3])))
def computeMI(pab, pa, pb):
return math.log(pab) - math.log(pa) - math.log(pb)