def classification_genetic(data_set, data_set_name, classes, population_size, crossover_prob, creep_variance, mutation_prob, tournament_size, convergence_size): print("Running classification on: {}".format(data_set_name)) network_layouts = get_network_layouts(data_set.num_cols, len(classes)) folds = data_set.validation_folds(10) for layer_sizes in network_layouts: average_accuracy = 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, classes) ga = Genetic(network, population_size=population_size, crossover_prob=crossover_prob, creep_variance=creep_variance, mutation_prob=mutation_prob, tournament_size=tournament_size, convergence_size=convergence_size) ga.train() accuracy = network.get_accuracy(test) average_accuracy += accuracy / 10 print("----Accuracy of fold {}: {:.2f}".format(fold_i, accuracy)) print("--Final accuracy: {:.2f}".format(average_accuracy))
def test_diff_evolution_image(): image_data = data.get_segmentation_data("../../data/segmentation.data") training_data, test_data = image_data.partition(.8) network = Network(training_data, test_data, [19, 13, 7], ["BRICKFACE", "SKY", "FOLIAGE", "CEMENT", "WINDOW", "PATH", "GRASS"]) diff_evo = DiffEvolution(network, mutation_f=.1, recombination_c=.9, pop_size=20) diff_evo.run() accuracy = network.get_accuracy(test_data)*100 print("\n\nAccuracy on test set: {}%".format(accuracy))
def test_particle_swarm_image(): image_data = data.get_segmentation_data("../../data/segmentation.data") training_data, test_data = image_data.partition(.8) network = Network(training_data, test_data, [19, 13, 7], ["BRICKFACE", "SKY", "FOLIAGE", "CEMENT", "WINDOW", "PATH", "GRASS"]) pso = ParticleSwarm(network, pop_size=20, cog_factor=1.0, soc_factor=2.0, inertia=0.05, max_velocity=100000, convergence_size=50) pso.train() accuracy = network.get_accuracy(test_data)*100 print("\n\nAccuracy on test set: {}%".format(accuracy))
def test_genetic_car(): population_size = 20 crossover_prob = 0.5 creep = 20 mutation_prob = 0.05 tournament_k = 2 convergence_size = 50 car_data = data.get_car_data("../../data/car.data") training_data, testing_data = car_data.partition(0.8) network = Network(training_data, testing_data, [6, 5, 4], ["acc", "unacc", "good", "vgood"]) ga = Genetic(network, population_size, crossover_prob, creep, mutation_prob, tournament_k, convergence_size) ga.train() accuracy = network.get_accuracy(testing_data)*100 print("\n\nAccuracy on test set: {}%".format(accuracy))
def test_genetic_image(): population_size = 20 crossover_prob = 0.5 creep = 20 mutation_prob = 0.05 tournament_k = 2 convergence_size = 50 image_data = data.get_segmentation_data("../../data/segmentation.data") training_data, testing_data = image_data.partition(0.8) network = Network(training_data, testing_data, [19, 13, 7], ["BRICKFACE", "SKY", "FOLIAGE", "CEMENT", "WINDOW", "PATH", "GRASS"]) ga = Genetic(network, population_size, crossover_prob, creep, mutation_prob, tournament_k, convergence_size) ga.train() accuracy = network.get_accuracy(testing_data)*100 print("\n\nAccuracy on test set: {}%".format(accuracy))
def test_genetic_abalone(): population_size = 20 crossover_prob = 0.5 creep = 1 mutation_prob = 0.05 tournament_k = 2 convergence_size = 100 abalone_data = data.get_abalone_data("../../data/abalone.data") training_data, testing_data = abalone_data.partition(0.8) network = Network(training_data, testing_data, [7, 4, 1], [i for i in range(1, 30)]) ga = Genetic(network, population_size, crossover_prob, creep, mutation_prob, tournament_k, convergence_size) ga.train() accuracy = network.get_accuracy(testing_data) * 100 print("\n\nAccuracy on test set: {}%".format(accuracy))
def classification_diff_evolution(data_set, data_set_name, classes, mutation_f, recombination_c, pop_size): print("Running classification on: {}".format(data_set_name)) network_layouts = get_network_layouts(data_set.num_cols, len(classes)) folds = data_set.validation_folds(10) for layer_sizes in network_layouts: average_accuracy = 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, classes) diff_evolution = DiffEvolution(network, mutation_f, recombination_c, pop_size) diff_evolution.run() accuracy = network.get_accuracy(test) average_accuracy += accuracy / 10 print("----Accuracy of fold {}: {:.2f}".format(fold_i, accuracy)) print("--Final accuracy: {:.2f}".format(average_accuracy))
def classification_particle_swarm(data_set, data_set_name, classes, pop_size, cog_factor, soc_factor, inertia, max_velocity, convergence_size): print("Running classification on: {}".format(data_set_name)) network_layouts = get_network_layouts(data_set.num_cols, len(classes)) folds = data_set.validation_folds(10) for layer_sizes in network_layouts: average_accuracy = 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, classes) pso = ParticleSwarm(network, pop_size, cog_factor, soc_factor, inertia, max_velocity, convergence_size) pso.train() accuracy = network.get_accuracy(test) average_accuracy += accuracy / 10 print("----Accuracy of fold {}: {:.2f}".format(fold_i, accuracy)) print("--Final accuracy: {:.2f}".format(average_accuracy))