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
    
  • 相关阅读:
    微软职位内部推荐-Software Engineer II
    微软职位内部推荐-Senior Software Engineer
    Linux日期时间显示输出
    Redis性能优化
    Can't use Subversion command line client: svn
    redis常用性能分析命令
    Linux下配置tomcat + apr + native应对高并发
    Tomcat7并发和线程数
    mongodb常用命令小结
    Spring MVC @PathVariable被截断
  • 原文地址:https://www.cnblogs.com/i80386/p/3333284.html
Copyright © 2011-2022 走看看