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