From 9cc2c3a4e863c7c2d2e8a6443c740013faed7c0c Mon Sep 17 00:00:00 2001 From: George Lacey Date: Fri, 10 Feb 2017 18:18:24 +0000 Subject: [PATCH] Move separate perceptron code into methods --- Main.py | 79 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 59 insertions(+), 20 deletions(-) diff --git a/Main.py b/Main.py index 04259b9..4bce33d 100644 --- a/Main.py +++ b/Main.py @@ -3,30 +3,69 @@ from random import Random from Dataset import Dataset from Graph import * -rand = Random() -data = Dataset(open("input.txt").read().split('\n'), open("target.txt").read().split('\n')) -learn_rate = 0.01 graph = Graph(640, 480, "Perceptron") graph.drawLine(Point(-1000, -1000 + 20), Point(1000, 1000 + 20)) +rand = Random() +data = Dataset(open("input.txt").read().split('\n'), open("target.txt").read().split('\n')) +learn_rate = 0.01 + p = Perceptron() i = data.inputs -p.add_input("1", 1, rand.uniform(-1, 1)) -p.add_input("2", 1, rand.uniform(-1, 1)) -p.add_input("bias", 1, rand.uniform(-1, 1)) -# train -for ind in range(0, 500): - i = data.inputs - for key in data.inputs: - p.input(i[key].value1, i[key].value2) - print("error: %f" % p.guess(i[key].target, learn_rate)) -for i in range(0, 1000): - x = input("Arg1: ") - y = input("Arg2: ") - p.input(x, y) - if p.activation() == 1: - print("TRUE") - else: - print("FALSE") \ No newline at end of file +def line_perceptron(): + p.add_input("1", 1, rand.uniform(-1, 1)) + p.add_input("2", 1, rand.uniform(-1, 1)) + + def answer(p_x, p_y): + if p_y > calc_y(p_x): + return 1 + else: + return -1 + + + def calc_y(p_x): + return p_x + 2 + + for ind in range(0, 1000): + x = rand.randint(-640 / 2, 640 / 2) + y = rand.randint(-480 / 2, 480 / 2) + print(x, y) + p.input(x, y) + print("error: %f" % p.guess(answer(x, y), learn_rate)) + + for i in range(0, 1000): + x = int(input("x: ")) + y = int(input("y: ")) + p.input(x, y) + if p.activation() == 1: + graph.win.plot(x, y, "green") + print("TRUE") + else: + graph.win.plot(x, y, "red") + print("FALSE") + + +def and_perceptron(): + p.add_input("1", 1, rand.uniform(-1, 1)) + p.add_input("2", 1, rand.uniform(-1, 1)) + p.add_input("bias", 1, rand.uniform(-1, 1)) + + # train + for ind in range(0, 500): + i = data.inputs + for key in data.inputs: + p.input(i[key].value1, i[key].value2) + print("error: %f" % p.guess(i[key].target, learn_rate)) + + for i in range(0, 1000): + x = input("Arg1: ") + y = input("Arg2: ") + p.input(x, y) + if p.activation() == 1: + print("TRUE") + else: + print("FALSE") + +line_perceptron() \ No newline at end of file