python机器学习之神经网络(一)
来源:互联网 发布:java项目流程图工具 编辑:程序博客网 时间:2024/06/05 11:16
python有专门的神经网络库,但为了加深印象,我自己在numpy库的基础上,自己编写了一个简单的神经网络程序,是基于Rosenblatt感知器的,这个感知器建立在一个线性神经元之上,神经元模型的求和节点计算作用于突触输入的线性组合,同时结合外部作用的偏置,对若干个突触的输入求和后进行调节。为了便于观察,这里的数据采用二维数据。
目标函数是训练结果的误差的平方和,由于目标函数是一个二次函数,只存在一个全局极小值,所以采用梯度下降法的策略寻找目标函数的最小值。
代码如下:
import numpy as npimport pylab as plb=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]) #初始wdef sgn(v): if v>=0: return 1 else: return -1def comy(myw,myx): return sgn(np.dot(myw.T,myx))def neww(oldw,myd,myx,a): return oldw+a*(myd-comy(oldw,myx))*myxfor ii in range(5): #迭代次数 i=0 for xn in x: w=neww(w,d[i],xn,a) i+=1 print wmyx=x[:,1] #绘制训练数据myy=x[:,2]pl.subplot(111)x_max=np.max(myx)+15x_min=np.min(myx)-5y_max=np.max(myy)+50y_min=np.min(myy)-5pl.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.68pl.plot(testx,testy,'g--')pl.show() for xn in x: print "%d %d => %d" %(xn[1],xn[2],comy(w,xn))
图中红色是训练数据,蓝色是测试数据,圆点代表类别-1.星点代表类别1。由图可知,对于线性可分的数据集,Rosenblatt感知器的分类效果还是不错的
0 0
- python机器学习之神经网络(一)
- python机器学习之神经网络(一)
- python机器学习之神经网络(一)
- python机器学习之神经网络(一)
- python机器学习之神经网络(二)
- python机器学习之神经网络(三)
- python机器学习之神经网络(二)
- python机器学习之神经网络(三)
- python机器学习之神经网络(二)
- python机器学习之神经网络(三)
- python机器学习之神经网络(二)
- python机器学习之神经网络(三)
- Python机器学习Sklearn入门之神经网络
- 机器学习笔记之神经网络模型(一)
- 机器学习之神经网络
- 机器学习之神经网络
- 机器学习之神经网络
- 机器学习之神经网络
- c#使用Web服务返回图片数据的方法
- centOS 安装 hadoop-2.2.0
- 小白谈memcache和memcached的区别
- Windows事件日志详解--登陆类型
- 使用jaxb将对象和xml进行互转
- python机器学习之神经网络(一)
- Eclipse Android java与xml代码自动提示功能
- 【原创】关于转载文章提示包含被禁用URL的问题
- BZOJ [Usaco2007 Jan]Telephone Lines架设电话线(POJ 3662)
- 中国剩余定理(chinese remainder theorem)【模板】
- 关于 ArrayList,Vector, LinkedList 的问答题
- jsp中,实现页面跳转的几种方式
- 《智慧政府之路:大数据、云计算、物联网架构应用》
- spring mvc 日期处理