def main(): fileW = createAnOutputFile() model = svm.SVR() numOfPop = 50 # should be 200 population, lower is faster but less accurate numOfFea = 385 # should be 385 descriptors unfit = 1000 # Final model requirements R2req_train = .6 R2req_validate = .5 R2req_test = .5 TrainX, TrainY, ValidateX, ValidateY, TestX, TestY = FromDataFileSVM_GA.getAllOfTheData() TrainX, ValidateX, TestX = FromDataFileSVM_GA.rescaleTheData(TrainX, ValidateX, TestX) #numOfFea = TrainX.shape[1] # should be 396 descriptors unfit = 1000 # when to stop when the model isn't doing well fittingStatus = unfit while (fittingStatus == unfit): population = createInitialPopulation(numOfPop, numOfFea) fittingStatus, fitness = FromFinessFileSVM_GA.validate_model(model, fileW, population, TrainX, TrainY, ValidateX, ValidateY, TestX, TestY) elite1, elite2, elite1Index, elite2Index = findElites(fitness, population) sumOfFitnesses = AddFitnessForFindingParents(fitness) print "Starting the Loop - time is = ", time.strftime("%H:%M:%S", time.localtime()) IterateNtimes(model, fileW, fitness, sumOfFitnesses, population, elite1, elite2, elite1Index, elite2Index, TrainX, TrainY, ValidateX, ValidateY, TestX, TestY) return
def IterateNtimes(model, fileW, fitness, sumOfFitnesses, population, elite1, elite2, elite1Index, elite2Index, TrainX, TrainY, ValidateX, ValidateY, TestX, TestY): unfit = 1000 numOfGenerations = 2000 # should be 2000 numOfPop = population.shape[0] numOfFea = population.shape[1] Times = 0 oldFitness = fitness.min() for i in range(1, numOfGenerations): oldFitness, Times = checkterTerminationStatus(Times, oldFitness, fitness.min()) print "This is generation ", i, " --- Minimum of fitness is: -> ", fitness.min() if (fitness.min() < 0.005): print "***********************************" print "Good: Fitness is low enough to quit" print "***********************************" exit(0) fittingStatus = unfit while (fittingStatus == unfit): population = findNewPopulation(elite1, elite2, sumOfFitnesses, population) fittingStatus, fitness = FromFinessFileSVM_GA.validate_model(model, fileW, population, TrainX, TrainY, ValidateX, ValidateY, TestX, TestY) elite1, elite2, elite1Index, elite2Index = findElites(fitness, population) #adding all the fitnesses and storing them in one dimensional array for #choosing the children for the next round sumFitnesses = AddFitnessForFindingParents(fitness) return