from sklearn import datasets import numpy as np def loadData(): dataset = datasets.load_iris() z1,z2 = dataset.data,dataset.target dataX = z1[0:100,:] dataY = z2[0:100] for i in range(100): if dataY[i]==0: dataY[i]=-1 return dataX,dataY '''上面就是准备好了数据 ''' '''从上面的输入数据可知,我们要训练的是一个第一层网络有4个输出,就是四个MP神经 元。输出的一个MP神经元。这整个就是一个二层神经网络。先要训练出w和b,其中w是4个参数 为了简单,这边直接写死。w是一个矢量,一次更新完成。 这里的梯度是一个常数,求一个即可至,因此这里的更新是有一点技巧的 input 向量w,b data 是一个一定格式的数据x1,x2,x3,...y1 ''' def perception(data,w0,b0,gama): w = w0 b = b0 j=0 while j<5: #这里是一个一直循环的,重复选取,直到没有误差,可以修改个判断的,这里就不写了。 for i in range(data.shape[0]): if data[i][-1]*(np.dot(w.T,data[i][:-1])+b)<=0: w =w +gama*data[i][-1]*data[i][:-1] b = b + gama*data[i][-1] j =j+1 return w,b #产生数据集 dataX,dataY = loadData() data = np.column_stack((dataX,dataY)) #初始化参数w,b w0 = np.array([0,0,0,0]) b0=0 #步长 gama = 0.05 w,b = perception(data,w0,b0,gama) print(w,b) def test(data,w,b): s=0 n=data.shape[0] for i in range(n): if data[i][-1]*(np.dot(w.T,data[i][:-1])+b)>0: s +=1 print('程序的正确率是:',s/n) test(data,w,b)
感知机的简单代码
猜你喜欢
转载自blog.csdn.net/tortelee/article/details/79659103
今日推荐
周排行