class Perception():
def train(self,x, y, gram):
learning_rate = 1
a = [0 for i in range(len(x))]
b = 0
flag = True
while flag :
flag = False
for i in range(0,len(x)):
z = 0
for j in range(0, len(a)):
z = z + learning_rate * a[j]*y[j]*gram[j][i]
z = z + b
if z*y[i] <= 0:
a[i] = a[i] + 1
b = b + learning_rate * y[i]
flag = True
print(a,b)
res = [0,0]
for i in range(len(res)):
for j in range(len(a)):
res[i] = res[i] + a[j]*x[j][i]*y[j]
print(res, b)
test = Perception()
x = [[3,3],[4,3],[1,1]]
y = [1,1,-1]
gram = []
for i in range(0,3):
temp = []
for j in range(0,3):
sum = 0
for k in range(0,len(x[i])):
sum = sum + x[i][0]*x[j][0]
temp.append(sum)
gram.append(temp)
test.train(x,y,gram)