fork download
  1. import numpy as np
  2. pr=np.array([[1, 1, 0.3],[1,0.4,0.5],[1, 0.7, 0.8]])
  3. w=[0.0, 0.0, 0.0]
  4. def Target(a,b):
  5. if a==1 and b==0.3:
  6. return 1
  7. elif a==0.4 and b==0.5:
  8. return 1
  9. elif a==0.7 and b==0.8:
  10. return 0
  11. def Predict(x):
  12. o=w[0]*x[0]+w[1]*x[1]+w[2]*x[2]
  13. # print("x", x)
  14. # print("o", o)
  15. if o>0:
  16. return 1
  17. else:
  18. return 0
  19.  
  20. perfect = False
  21. while not perfect:
  22. perfect=True
  23. for p in pr:
  24. if Predict(p)!=Target(p[1], p[2]):
  25. perfect=False
  26. if Predict(p)==0:
  27. w=w+p
  28. print("w ", w)
  29. else:
  30. w=w-p
  31. print("w ", w)
  32. print(w)
  33.  
Success #stdin #stdout 0.06s 23648KB
stdin
Standard input is empty
stdout
('w ', array([1. , 1. , 0.3]))
('w ', array([ 0. ,  0.3, -0.5]))
('w ', array([1. , 0.7, 0. ]))
('w ', array([ 0.00000000e+00,  1.11022302e-16, -8.00000000e-01]))
('w ', array([ 1. ,  1. , -0.5]))
('w ', array([ 0. ,  0.3, -1.3]))
('w ', array([ 1. ,  1.3, -1. ]))
('w ', array([ 0. ,  0.6, -1.8]))
('w ', array([ 1. ,  1. , -1.3]))
('w ', array([ 0. ,  0.3, -2.1]))
('w ', array([ 1. ,  1.3, -1.8]))
('w ', array([ 0. ,  0.6, -2.6]))
('w ', array([ 1. ,  1.6, -2.3]))
('w ', array([ 0. ,  0.9, -3.1]))
('w ', array([ 1. ,  1.9, -2.8]))
('w ', array([ 0. ,  1.2, -3.6]))
('w ', array([ 1. ,  1.6, -3.1]))
[ 1.   1.6 -3.1]