コード例 #1
0
def regression_genetic(data_set, data_set_name, population_size,
                       crossover_prob, creep_variance, mutation_prob,
                       tournament_size, convergence_size):
    print("Running regression on: {}".format(data_set_name))
    network_layouts = get_network_layouts(data_set.num_cols, 1)

    folds = data_set.validation_folds(10)
    for layer_sizes in network_layouts:
        average_error = 0
        print("--Testing network layout: {}".format(layer_sizes))
        for fold_i, fold in enumerate(folds):
            train = fold['train']
            test = fold['test']

            network = Network(train, test, layer_sizes)
            ga = Genetic(network, population_size, crossover_prob,
                         creep_variance, mutation_prob, tournament_size,
                         convergence_size)

            ga.train()

            error = network.get_error(test)
            average_error += error / 10
            print("----Error of fold {}: {:.2f}".format(fold_i, error))
        print("--Final error: {:.2f}".format(average_error))
コード例 #2
0
def test_genetic_wine():
    population_size = 20
    crossover_prob = 0.5
    creep = 1
    mutation_prob = 0.05
    tournament_k = 2
    convergence_size = 100

    wine_data = data.get_wine_data("../../data/winequality.data")
    training, test = wine_data.partition(.9)
    network = Network(training, test, [11, 6, 1])
    ga = Genetic(network, population_size, crossover_prob, creep, mutation_prob, tournament_k, convergence_size)
    ga.train()

    error = network.get_error(test) * 100
    print("\n\nError on test set: {}%".format(error))
コード例 #3
0
def regression_diff_evolution(data_set, data_set_name, mutation_f,
                              recombination_c, pop_size):
    print("Running regression on: {}".format(data_set_name))
    network_layouts = get_network_layouts(data_set.num_cols, 1)

    folds = data_set.validation_folds(10)
    for layer_sizes in network_layouts:
        average_error = 0
        print("--Testing network layout: {}".format(layer_sizes))
        for fold_i, fold in enumerate(folds):
            train = fold['train']
            test = fold['test']

            network = Network(train, test, layer_sizes)
            diff_evolution = DiffEvolution(network, mutation_f,
                                           recombination_c, pop_size)
            diff_evolution.run()

            error = network.get_error(test)
            average_error += error / 10
            print("----Error of fold {}: {:.2f}".format(fold_i, error))
        print("--Final error: {:.2f}".format(average_error))
コード例 #4
0
def regression_particle_swarm(data_set, data_set_name, pop_size, cog_factor,
                              soc_factor, inertia, max_velocity,
                              convergence_size):
    print("Running regression on: {}".format(data_set_name))
    network_layouts = get_network_layouts(data_set.num_cols, 1)

    folds = data_set.validation_folds(10)
    for layer_sizes in network_layouts:
        average_error = 0
        print("--Testing network layout: {}".format(layer_sizes))
        for fold_i, fold in enumerate(folds):
            train = fold['train']
            test = fold['test']

            network = Network(train, test, layer_sizes)
            pso = ParticleSwarm(network, pop_size, cog_factor, soc_factor,
                                inertia, max_velocity, convergence_size)
            pso.train()

            error = network.get_error(test)
            average_error += error / 10
            print("----Error of fold {}: {:.2f}".format(fold_i, error))
        print("--Final error: {:.2f}".format(average_error))