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