zoukankan      html  css  js  c++  java
  • GIS

    def GIS():
        global C
        global FeaWeights
        for wid in WordDic.keys():
            FeaWeights[wid] = {}
            for classid in ClassList:
                FeaWeights[wid][classid] = 0.0
        n = 0
        prelogllh = -1000000.0
        logllh = -10000.0
        while logllh - prelogllh >= LogLLDiff and n < MaxIteration:
            n += 1
            prelogllh = logllh
            logllh = 0.0
            print "Iteration", n
            for wid in WordDic.keys():
                for classid in ClassList:
                    FeaClassTable[wid][1][classid] = 0.0
            #compute expected values of features subject to the model p(y|x)
            for doc in DocList:
                classProbs = [0.0] * len(ClassList)
                sum = 0.0
                for i in range(len(ClassList)):
                    classid = ClassList[i]
                    pyx = 0.0
                    for wid in doc[0].keys():
                        pyx += FeaWeights[wid][classid]
                    pyx = math.exp(pyx)
                    classProbs[i] = pyx
                    sum += pyx
                for i in range(len(ClassList)):
                    classProbs[i] = classProbs[i] / sum
                for i in range(len(ClassList)):
                    classid = ClassList[i]
                    if classid == doc[1]:
                        logllh += math.log(classProbs[i])
                    for wid in doc[0].keys():
                        FeaClassTable[wid][1][classid] += classProbs[i] * doc[0][wid]
            #update feature weights
            for wid in WordDic.keys():
                for classid in ClassList:
                    empValue = 0.0
                    if classid in FeaClassTable[wid][0]:
                        empValue = FeaClassTable[wid][0][classid]
                    modelValue = 0.0
                    if classid in FeaClassTable[wid][1]:
                        modelValue = FeaClassTable[wid][1][classid]
                    if empValue == 0.0 or modelValue == 0.0:
                        continue
                    FeaWeights[wid][classid] += math.log(
                        FeaClassTable[wid][0][classid] / FeaClassTable[wid][1][classid]) / C
            print "Loglikelihood:", logllh
        return
    
  • 相关阅读:
    C# DataTable的用法详解
    Matlab绘图方法汇总
    java中Comparator的用法
    Java获取随机数
    jQuery动画高级用法——详解animation中的.queue()函数
    Oracle序列号详解
    jQuery验证框架教程
    二十四、按后退键退出Android程序
    同步synchronized用法
    jQuery 复选框全选反选
  • 原文地址:https://www.cnblogs.com/i80386/p/3333284.html
Copyright © 2011-2022 走看看