예제 #1
0
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))
예제 #7
0
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))
예제 #8
0
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))