python有专门的神经网络库,但为了加深印象,我自己在numpy库的基础上,自己编写了一个简单的神经网络程序,是基于Rosenblatt感知器的,这个感知器建立在一个线性神经元之上,神经元模型的求和节点计算作用于突触输入的线性组合,同时结合外部作用的偏置,对若干个突触的输入求和后进行调节。为了便于观察,这里的数据采用二维数据。
目标函数是训练结果的误差的平方和,由于目标函数是一个二次函数,只存在一个全局极小值,所以采用梯度下降法的策略寻找目标函数的最小值。
代码如下:
import numpy as np import pylab as pl b=1 #偏置 a=0.3 #学习率 x=np.array([[b,1,3],[b,2,3],[b,1,8],[b,2,15],[b,3,7],[b,4,29],[b,4,8],[b,4,20]]) #训练数据 d=np.array([1,1,-1,-1,1,-1,1,-1]) #训练数据类别 w=np.array([b,0,0]) #初始w def sgn(v): if v>=0: return 1 else: return -1 def comy(myw,myx): return sgn(np.dot(myw.T,myx)) def neww(oldw,myd,myx,a): return oldw+a*(myd-comy(oldw,myx))*myx for ii in range(5): #迭代次数 i=0 for xn in x: w=neww(w,d[i],xn,a) i+=1 print w myx=x[:,1] #绘制训练数据 myy=x[:,2] pl.subplot(111) x_max=np.max(myx)+15 x_min=np.min(myx)-5 y_max=np.max(myy)+50 y_min=np.min(myy)-5 pl.xlabel(u"x") pl.xlim(x_min,x_max) pl.ylabel(u"y") pl.ylim(y_min,y_max) for i in range(0,len(d)): if d[i]==1: pl.plot(myx[i],myy[i],'r*') else: pl.plot(myx[i],myy[i],'ro') #绘制测试点 test=np.array([b,9,19]) if comy(w,test)>0: pl.plot(test[1],test[2],'b*') else: pl.plot(test[1],test[2],'bo') test=np.array([b,9,64]) if comy(w,test)>0: pl.plot(test[1],test[2],'b*') else: pl.plot(test[1],test[2],'bo') test=np.array([b,9,16]) if comy(w,test)>0: pl.plot(test[1],test[2],'b*') else: pl.plot(test[1],test[2],'bo') test=np.array([b,9,60]) if comy(w,test)>0: pl.plot(test[1],test[2],'b*') else: pl.plot(test[1],test[2],'bo') #绘制分类线 testx=np.array(range(0,20)) testy=testx*2+1.68 pl.plot(testx,testy,'g--') pl.show() for xn in x: print "%d %d => %d" %(xn[1],xn[2],comy(w,xn))
图中红色是训练数据,蓝色是测试数据,圆点代表类别-1.星点代表类别1。由图可知,对于线性可分的数据集,Rosenblatt感知器的分类效果还是不错的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
python,机器学习,神经网络
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。