Python实现感知器

xiaoxiao2021-02-28  63

# -*- coding: utf-8 -*- """ Created on Fri Sep 1 11:56:12 2017 @author: piaodexin """ # import pandas as pd import numpy as np #生成正标签数据 x1=np.random.randn(50,2)+40 y1=np.ones((50,1)) data1=np.hstack([x1,y1]) #生成负标签数据 x2=np.random.randn(50,2) y2=-np.ones((50,1)) data2=np.hstack([x2,y2]) #将数据合并 data=np.vstack([data1,data2]) from sklearn import cross_validation #将原始数据分成训练数据,和测试数据 train_x,test_x,train_y,test_y=cross_validation.train_test_split(data[:,:-1],data[:,-1],test_size=0.25, random_state=0,stratify=data[:,-1]) #初始化权重和偏差 w=np.random.randn(2) b=np.ones(1) #设置学习率 a=0.1 c=0 #进行3000轮实验 while c<3000: for i in range(len(train_x)): #如果某次分类错误,则修改权值和偏差 if train_y[i]*(np.sum(w*train_x[i])+b)<=0: w+=a*train_y[i]*train_x[i] b=a*train_y[i] c+=1 #最后在测试集上检验正确率 count=0 for i in range(len(test_x)): if train_y[i]*(np.sum(w*train_x[i])+b)<=0: count+=1 precision=(len(test_x)-count)/len(test_x)
转载请注明原文地址: https://www.6miu.com/read-78481.html

最新回复(0)