Beispiel #1
0
class CarGenetic(RaceGame):
    def __init__(self):
        self.delta_angle = [
            -0.035, -0.03, -0.025, -0.02, -0.015, -0.01, -0.005, 0, 0.005,
            0.01, 0.015, 0.02, 0.025, 0.03, 0.035
        ]

    def start(self):
        self.len_delta = len(self.delta_angle)
        self.nn_nodes = [5, 8, 5, self.len_delta]
        self.model = NeuralNetwork(self.nn_nodes)
        self.step = 0
        self.max_step = 0
        self.training_group = []
        self.best_traning = []
        RaceGame.__init__(self)

    def load(self):
        self.model = NeuralNetwork()
        self.model.load('car_model.dat')
        self.step = 0
        self.max_step = 0
        self.training_group = []
        self.best_traning = []
        RaceGame.__init__(self)

    def update(self):
        RaceGame.update(self)

        if self.is_broken:
            self.training_car()
            self.car.restart()
            self.training_group = []
            self.step = 0
        else:
            input = self.collision_sight + [self.car.angle]
            id_output = self.model.train(input)
            self.training_group.append((input, id_output))
            self.step += 1

            if self.step == 300:
                self.model.save('car_model.dat')

            self.car.update(delta_angle=self.delta_angle[id_output])

    def training_car(self):
        num_last_step = 5
        if self.step > self.max_step:
            self.max_step = self.step
            self.best_traning = self.training_group[:-num_last_step]

            for train_data in self.best_traning:
                self.model.train(train_data[0], expected_id=train_data[1])

        for train_data in self.training_group[-num_last_step:]:
            self.model.train(train_data[0], unexpected_id=train_data[1])
Beispiel #2
0
class CarGenetic(RaceGame):

    def __init__(self):
        self.delta_angle = [-0.035, -0.03, -0.025, -0.02, -0.015, -0.01, -0.005, 0,
                            0.005, 0.01, 0.015, 0.02, 0.025, 0.03, 0.035]

    def start(self):
        self.len_delta = len(self.delta_angle)
        self.nn_nodes = [5, 8, 5, self.len_delta]
        self.model = NeuralNetwork(self.nn_nodes)
        self.step = 0
        self.max_step = 0
        self.training_group = []
        self.best_traning = []
        RaceGame.__init__(self)

    def load(self):
        self.model = NeuralNetwork()
        self.model.load('car_model.dat')
        self.step = 0
        self.max_step = 0
        self.training_group = []
        self.best_traning = []
        RaceGame.__init__(self)

    def update(self):
        RaceGame.update(self)

        if self.is_broken:
            self.training_car()
            self.car.restart()
            self.training_group = []
            self.step = 0
        else:
            input = self.collision_sight + [self.car.angle]
            id_output = self.model.train(input)
            self.training_group.append((input, id_output))
            self.step += 1

            if self.step == 300:
                self.model.save('car_model.dat')

            self.car.update(delta_angle=self.delta_angle[id_output])

    def training_car(self):
        num_last_step = 5
        if self.step > self.max_step:
            self.max_step = self.step
            self.best_traning = self.training_group[:-num_last_step]

            for train_data in self.best_traning:
                self.model.train(train_data[0], expected_id=train_data[1])

        for train_data in self.training_group[-num_last_step:]:
            self.model.train(train_data[0], unexpected_id=train_data[1])
Beispiel #3
0
__author__ = 'sunary'


from neural_network.model_nn import NeuralNetwork
import pandas as pd
import datetime


model = NeuralNetwork([50, 20, 10, 2])
model.load('numer_ai.dat')


def train(file='/Users/sunary/Downloads/numerai_datasets/numerai_training_data.csv'):
    df = pd.read_csv(file)

    for _round in range(100):
        print 'Round {}: {}'.format(_round, datetime.datetime.now())
        for index, row in df.iterrows():
            model.train(row[:50].tolist(), int(row['target']))

        model.save('numer_ai.dat')


def test(file='/Users/sunary/Downloads/numerai_datasets/numerai_training_data.csv'):
    df = pd.read_csv(file)

    accuracy = 0
    for index, row in df.iterrows():
        predict_id = model.train(row[:50].tolist())
        if predict_id == int(row['target']):
            accuracy += 1