#author:xinxinzhang
import numpy as np def loadData(): #加载数据 X=np.mat([[3,3], [4,3], [1,1]]) Y=[1,1,-1] return X,Y def perceptron_s(X,Y): #感知机算法原始形式 w=np.mat([0,0]) #初始化w,b b=0 m,n=np.shape(X) isfind=False while not isfind: for i in range(m): #在训练集中选取数据xi,yi wx=int(np.dot(w,X[i].T)) if Y[i]*(wx+b) <=0: #若分类错误,更新w,b w+=Y[i]*X[i] b+=Y[i] print(w,b) break elif i==m-1: #直至训练集中没有误分类点 print(w,b) isfind=True X,Y=loadData() perceptron_s(X,Y)
#结果如表2.1