Skip to content

Instantly share code, notes, and snippets.

@irvin373
Created June 9, 2019 13:32
Show Gist options
  • Save irvin373/275cff94b9cf05c01cbb97e170a494f8 to your computer and use it in GitHub Desktop.
Save irvin373/275cff94b9cf05c01cbb97e170a494f8 to your computer and use it in GitHub Desktop.
import numpy as np
class Perceptron(object):
def __init__(self, no_of_inputs, threshold=100, learning_rate=0.01):
self.threshold = threshold
self.learning_rate = learning_rate
self.weights = np.zeros(no_of_inputs + 1)
def predict(self, inputs):
summation = np.dot(inputs, self.weights[1:]) + self.weights[0]
if summation > 0:
activation = 1
else:
activation = 0
return activation
def train(self, training_inputs, labels):
for _ in range(self.threshold):
for inputs, label in zip(training_inputs, labels):
prediction = self.predict(inputs)
self.weights[1:] += self.learning_rate * (label - prediction) * inputs
self.weights[0] += self.learning_rate * (label - prediction)
training_inputs = []
training_inputs.append(np.array([1, 1]))
training_inputs.append(np.array([1, 0]))
training_inputs.append(np.array([0, 1]))
training_inputs.append(np.array([0, 0]))
labels = np.array([1, 0, 0, 0])
perceptron = Perceptron(2)
perceptron.train(training_inputs, labels)
inputs = np.array([1, 1])
print(perceptron.predict(inputs))
#=> 1
inputs = np.array([0, 1])
print(perceptron.predict(inputs))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment