In [6]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
In [15]:
def func(x, y):
result = [0]*len(y)
for n in range(len(y)):
if y[n] > 2*x[n] + 1:
result[n] = 1
else:
result[n] = -1
return result
def create_training_data(n):
x = np.random.rand(n) * 10 - 5
y = np.random.rand(n) * 10 - 5
data = np.array([x, y, func(x, y)])
return data
data = create_training_data(50)
weights = np.random.rand(2) * 2 - 1
inputs = [data[0], data[1]]
answers = data[2]
lc = 0.02
def activate(sum_):
if sum_ > 0:
return 1
else:
return -1
def sum_(inputs):
sum_ = 0
for n in range(len(weights)):
sum_ += inputs[n]*weights[n]
return activate(sum_)
def train(inputs, answer):
guess = sum_(inputs)
error = answer - guess
for n in range(len(weights)):
weights[n] += lc*error*inputs[n]
In [16]:
for n in range(len(data[0])):
train([inputs[0][n], inputs[1][n]], answers[n])
In [17]:
x = np.array(data[0])
y = np.array(data[1])
plt.scatter(x, y)
linex = np.linspace(-5, 5, 100)
liney = 2*linex + 1
plt.plot(linex, liney)
Out[17]:
In [ ]:
In [ ]: