Beispiel #1
0
def main():
    # Takes in the file and parses into datum's.
    D = cData(sys.argv[1])
    # Starting points from the pickle or not.
    EmAlg = parseCommandLine(D, sys.argv)   
   
    prevCons = 0
    totalcons = 0
    nmiResult = evaluateEM_NMI(D, EmAlg)
    print "Initial nmi: ",nmiResult
    
    consobj = Cons.cCons(D)
    for numCons in range(1,len(D.data)/4,1):
        consobj.constype = Cons.cCons.eConsType.TripCenterChunk
        consobj.centerChunkSize = 0.2
        cons = consobj.tripCons(EmAlg.mGammas,numCons-prevCons)
        prevCons = numCons
        totalcons += len(cons)
        for i in cons:
            EmAlg.mCij[i[0]][i[1]] = i[2]
            EmAlg.mCij[i[1]][i[0]] = i[2] 
        EmAlg.EM(len(D.classlist))
        nmiresult = evaluateEM_NMI(D, EmAlg)
        print numCons, ",", nmiresult, ",", totalcons 
        if(nmiresult > 0.999 or len(D.data)==numCons):
            break
Beispiel #2
0
def TripConsTest(D, sNum, EMStarts, fp):
    fp.write("trips,queries,cons,likelihood,NMI\n")
    for option in TripConsOptions.lOptions:
        optname = TripConsOptions.lOptionNames[option]
        fp.write(optname + "\n")
        for iOutertrial in range(numOuterTrials):
            print "scenario ", sNum, " options ", optname, " outertrial ", iOutertrial
            fp.write("outertrial: %d\n" % iOutertrial)

            em = copy.deepcopy(EMStarts[iOutertrial])
            em.bPPC = True

            prevTrips = 0
            totalCons = 0
            nmiResult = utils.evaluateEM_NMI(D, em)
            fp.write("Initial nmi: %f\n" % nmiResult)
            consobj = Cons.cCons(D)
            for numTrips in range(1,len(D.data)/4,1):
                if option == TripConsOptions.CenterChunkCons:
                    consobj.constype = Cons.cCons.eConsType.TripCenterChunk
                elif option == TripConsOptions.MidCons:
                    consobj.constype = Cons.cCons.eConsType.TripMids

                print em.mLikelihood_il

                cons = consobj.tripCons(em.mGammas,numTrips-prevTrips)
                prevTrips = numTrips
                totalCons += len(cons)
                for i in cons:
                    em.mCij[i[0]][i[1]] = i[2]
                    em.mCij[i[1]][i[0]] = i[2] 
                em.EM(len(D.classlist))

                nmiresult = utils.evaluateEM_NMI(D, em)
                fp.write("%d,%d,%d,%f,%f\n" % (numTrips,
                                              numTrips*14,
                                              totalCons,
                                              em.dEMLikelihood,
                                              nmiresult) )
                fp.flush()

                if (nmiresult > 0.999 or len(D.data)==numTrips):
                    break