From fbac62f400911a33757accfdde04ece9774c3926 Mon Sep 17 00:00:00 2001 From: George Lacey Date: Fri, 10 Feb 2017 12:12:16 +0000 Subject: [PATCH 1/6] Create Dataset class --- Dataset.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Dataset.py diff --git a/Dataset.py b/Dataset.py new file mode 100644 index 0000000..864ee5b --- /dev/null +++ b/Dataset.py @@ -0,0 +1,16 @@ +from Data import Data + + +class Dataset(object): + + def __init__(self, p_input, p_target): + self.inputs = {} + + for index, item in enumerate(p_input): + input1 = float(p_input[index].split(',')[0].strip()) + input2 = float(p_input[index].split(',')[1].strip()) + if p_target[index] == "1": + output = 1 + else: + output = -1 + self.inputs[index] = Data(input1, input2, output) From c19c457a36103c70ee8a2ad607306f2e6810d7f7 Mon Sep 17 00:00:00 2001 From: George Lacey Date: Fri, 10 Feb 2017 12:12:44 +0000 Subject: [PATCH 2/6] Implement guess method --- Perceptron.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Perceptron.py b/Perceptron.py index 327d17e..f499cc0 100644 --- a/Perceptron.py +++ b/Perceptron.py @@ -27,6 +27,11 @@ class Perceptron(object): print("Total = %f" % input) if input > 0: - return True + return 1 else: - return False + return -1 + + def guess(self, p_desired): + prediction = float(self.activation()) + return p_desired - prediction + From 6898232967cbeea1315f9a945e20dbe80a0d261c Mon Sep 17 00:00:00 2001 From: George Lacey Date: Fri, 10 Feb 2017 12:16:53 +0000 Subject: [PATCH 3/6] Add Main --- Main.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Main.py b/Main.py index e69de29..7bcc4db 100644 --- a/Main.py +++ b/Main.py @@ -0,0 +1,16 @@ +from Perceptron import Perceptron +from random import Random +from Dataset import Dataset + +rand = Random() +data = Dataset(open("input.txt").read().split('\n'), open("target.txt").read().split('\n')) + + +for key in data.inputs: + i = data.inputs + print("v1: ", i[key].value1, "v2: ", i[key].value2, "target: ", i[key].target) + p = Perceptron() + p.add_input("1", i[key].value1, rand.uniform(-1, 1)) + p.add_input("2", i[key].value2, rand.uniform(-1, 1)) + p.add_input("bias", 1, rand.uniform(-1, 1)) + print("%f" % p.guess(i[key].target)) From 19d60f0b9206e842cb20b000779d287585d12649 Mon Sep 17 00:00:00 2001 From: George Lacey Date: Fri, 10 Feb 2017 12:12:16 +0000 Subject: [PATCH 4/6] Create Dataset class --- Dataset.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Dataset.py diff --git a/Dataset.py b/Dataset.py new file mode 100644 index 0000000..864ee5b --- /dev/null +++ b/Dataset.py @@ -0,0 +1,16 @@ +from Data import Data + + +class Dataset(object): + + def __init__(self, p_input, p_target): + self.inputs = {} + + for index, item in enumerate(p_input): + input1 = float(p_input[index].split(',')[0].strip()) + input2 = float(p_input[index].split(',')[1].strip()) + if p_target[index] == "1": + output = 1 + else: + output = -1 + self.inputs[index] = Data(input1, input2, output) From 8d918a9434d04899807287fdcaf78aebfc49288c Mon Sep 17 00:00:00 2001 From: George Lacey Date: Fri, 10 Feb 2017 12:12:44 +0000 Subject: [PATCH 5/6] Implement guess method --- Perceptron.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Perceptron.py b/Perceptron.py index 327d17e..f499cc0 100644 --- a/Perceptron.py +++ b/Perceptron.py @@ -27,6 +27,11 @@ class Perceptron(object): print("Total = %f" % input) if input > 0: - return True + return 1 else: - return False + return -1 + + def guess(self, p_desired): + prediction = float(self.activation()) + return p_desired - prediction + From 17deb7690c54e50ef266ff318621f53cd2a832e3 Mon Sep 17 00:00:00 2001 From: George Lacey Date: Fri, 10 Feb 2017 12:16:53 +0000 Subject: [PATCH 6/6] Implement basic functionality --- Main.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Main.py b/Main.py index e69de29..7bcc4db 100644 --- a/Main.py +++ b/Main.py @@ -0,0 +1,16 @@ +from Perceptron import Perceptron +from random import Random +from Dataset import Dataset + +rand = Random() +data = Dataset(open("input.txt").read().split('\n'), open("target.txt").read().split('\n')) + + +for key in data.inputs: + i = data.inputs + print("v1: ", i[key].value1, "v2: ", i[key].value2, "target: ", i[key].target) + p = Perceptron() + p.add_input("1", i[key].value1, rand.uniform(-1, 1)) + p.add_input("2", i[key].value2, rand.uniform(-1, 1)) + p.add_input("bias", 1, rand.uniform(-1, 1)) + print("%f" % p.guess(i[key].target))