import numpy as np
import matplotlib.pyplot as plt
#input data
data1=[np.array([[3,3]]),np.array([1])]
data2=[np.array([[4,3]]),np.array([1])]
data3=[np.array([[1,1]]),np.array([-1])]
data_list=[data1,data2,data3]
#init paramenter
w_0=np.array([0,0])
b_0=np.array([0])
beta=1
a=0
while a!=3:
dis=(data_list[a][1]*(np.dot(w_0,data_list[a][0].T)+b_0))
if dis<=np.array([0]):
w_0+=beta*np.dot(data_list[a][1],data_list[a][0])
b_0+=beta*np.array(data_list[a][1])
a=0
else:
a+=1
print(w_0,b_0)
x_1=np.linspace(-5,5,10)
x_2=(-w_0[0]*x_1-b_0)/w_0[1]
#draw diagram
plt.scatter(data1[0][0][0],data1[0][0][1],color="r")
plt.scatter(data2[0][0][0],data2[0][0][1],color="r")
plt.scatter(data3[0][0][0],data3[0][0][1],color="g")
plt.plot(x_1,x_2)
plt.show()
红色代表正例,绿色代表负例,很轻松就划分开了。