Exemplo n.º 1
0
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
Exemplo n.º 2
0
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