李航 统计机器学习方法感知机 Python实现参数学习

    技术2025-08-09  10

    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()

     

     红色代表正例,绿色代表负例,很轻松就划分开了。

    Processed: 0.009, SQL: 10