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]:
[<matplotlib.lines.Line2D at 0x7f7820e01e10>]

In [ ]:


In [ ]: