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
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