• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

log likelihood相似度python实现

Python admin 3个月前 (07-20) 162次浏览 0个评论 扫描二维码

上一篇文章中介绍了 log likehood 相似度函数,这里在贴上代码,这份代码是参考了 mahout 代码实现,想看 mahout 在这个源码实现的可以去看 Apache 官方源码,也是比较好理解的。

话不多说直接上代码,也是比较简单,熵是非归一化的,区别于常规的熵计算

 def entropy(*elements):
    sum = 0
    result = 0.0
    for element in elements:

      result += xLogX(element)
      sum += element
    return xLogX(sum) - result

def xLogX(x)->float:
    return  0.0 if x==0 else  x * math.log(x)

def checkargs(*args):
    for x in args:
        if x<0: raise ValueError 
def logLikelihoodRatio(k11, k12,k21,k22)->float:
    checkargs(k11,k12,k21,k22)
    #note that we have counts here, not probabilities, and that the entropy is not normalized.
    rowEntropy = entropy(k11 + k12, k21 + k22);
    columnEntropy = entropy(k11 + k21, k12 + k22);
    matrixEntropy = entropy(k11, k12, k21, k22);
    if rowEntropy + columnEntropy < matrixEntropy:
      #round off error
      return 0.0
    return 2.0 * (rowEntropy + columnEntropy - matrixEntropy)

 

 


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明log likelihood 相似度 python 实现
喜欢 (0)
admin
关于作者:

您必须 登录 才能发表评论!