import numpy 
as np
 
x 
= np
.array
([[3,3],[4,3],[1,1]])
y 
= np
.array
([1,1,-1])
 
alfa 
= np
.zeros
(3)
alfa
 
array([0., 0., 0.])
 
w 
= np
.array
([0.,0.])
b 
= 0
lr 
= 1
def foo(alfa
,y
,w
):
    for i 
in range(len(y
)):
        w 
+= alfa
[i
] * y
[i
] * x
[i
]
    return w
w 
= foo
(alfa
,y
,w
)
w
 
array([0., 0.])
 
count 
=20
tag 
= 0
print('alfa={},b={}'.format(alfa
,b
))
while count 
> 1:
    tag 
+= 1
    print('第{}次迭代'.format(tag
))
    w 
= np
.array
([0.,0.])
    w 
= foo
(alfa
,y
,w
)
    print('w={},b={}'.format(w
,b
))
    count 
-= 1
    for i 
in range(len(y
)):
        print(i
)
        if y
[i
]*(w
.dot
(x
[i
]) + b
) <= 0:
            alfa
[i
] += 1
            b 
+= y
[i
]
            print('error classify: '+str(i
))
            print('alfa={},b={}'.format(alfa
,b
))
            
            break
    
 
alfa=[0. 0. 0.],b=0
第1次迭代
w=[0. 0.],b=0
0
error classify: 0
alfa=[1. 0. 0.],b=1
第2次迭代
w=[3. 3.],b=1
0
1
2
error classify: 2
alfa=[1. 0. 1.],b=0
第3次迭代
w=[2. 2.],b=0
0
1
2
error classify: 2
alfa=[1. 0. 2.],b=-1
第4次迭代
w=[1. 1.],b=-1
0
1
2
error classify: 2
alfa=[1. 0. 3.],b=-2
第5次迭代
w=[0. 0.],b=-2
0
error classify: 0
alfa=[2. 0. 3.],b=-1
第6次迭代
w=[3. 3.],b=-1
0
1
2
error classify: 2
alfa=[2. 0. 4.],b=-2
第7次迭代
w=[2. 2.],b=-2
0
1
2
error classify: 2
alfa=[2. 0. 5.],b=-3
第8次迭代
w=[1. 1.],b=-3
0
1
2
第9次迭代
w=[1. 1.],b=-3
0
1
2
第10次迭代
w=[1. 1.],b=-3
0
1
2
第11次迭代
w=[1. 1.],b=-3
0
1
2
第12次迭代
w=[1. 1.],b=-3
0
1
2
第13次迭代
w=[1. 1.],b=-3
0
1
2
第14次迭代
w=[1. 1.],b=-3
0
1
2
第15次迭代
w=[1. 1.],b=-3
0
1
2
第16次迭代
w=[1. 1.],b=-3
0
1
2
第17次迭代
w=[1. 1.],b=-3
0
1
2
第18次迭代
w=[1. 1.],b=-3
0
1
2
第19次迭代
w=[1. 1.],b=-3
0
1
2