python如何实现感知器学习算法
这篇文章主要介绍python如何实现感知器学习算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
我们将研究一种判别式分类方法,其中直接学习评估 g(x)所需的 w 参数。我们将使用感知器学习算法。
感知器学习算法很容易实现,但为了节省时间,我在下面为您提供了一个实现。该函数有几个输入:训练数据、训练标签、对权重的初始猜测和学习率。注意,对于这两个类,类标签的值必须为+1和-1。
它将返回一个元组,其中包含:
1.学习w参数
2.执行的迭代次数
3.错误分类的样本数
花些时间检查代码。如果不清楚每一行是如何工作的,不要担心,只要让你自己知道每一行的目的是什么就可以了。代码中有一些注释可以帮助大家。
defperce(X,y,w_init,rho,max_iter=1000):(N,nfeatures)=X.shape#Augmentthefeaturevectorsbyaddinga1toeachone.(seelecturenotes)X=np.hstack((X,np.ones((N,1))))nfeatures+=1w=w_init#initialiseweightsiter=0mis_class=N#startbyassumingallsamplesaremisclassifiedwhilemis_class>0anditer<max_iter:iter+=1mis_class=0gradient=np.zeros(nfeatures)#initaliasethegradientsto0#loopovereverytrainingsample.foriinrange(N):#eachmisclassifiedpointwillcausethegradienttochangeifnp.inner(X[i,:],w)*y[i]<=0:mis_class+=1gradient+=-y[i]*X[i,:]#updatetheweightvectorreadyforthenextiteration#Note,alsothatthelearningratedecaysovertime(rho/iter)w-=rho/iter*gradientreturnw,iter,mis_class
解释:
X-数据矩阵。每行代表一个单独的样本
y-与X-标签行对应的整数类标签的一维数组必须为+1或-1
w_init-初始权重向量
rho-标量学习率
最大迭代次数-最大迭代次数(默认为1000)
defperce_fast(X,y,w_init,rho,max_iter=10000):(N,nfeatures)=X.shapeX=np.hstack((X,np.ones((N,1))))nfeatures+=1w=w_inititer=0mis_class=Nyy=np.tile(y,(nfeatures,1)).Twhilemis_class>0anditer<max_iter:iter+=1#Computesetofmisclassifiedpointsmc=(np.dot(X,w.transpose())*y)<=0mis_class=np.sum(mc)#Updateweights.Note,thelearningratedecaysovertime(rho/iter)w-=rho/iter*(np.sum(-yy[mc,:]*X[mc,:],axis=0))returnw,iter,np.sum(mc)
以上是“python如何实现感知器学习算法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。