首页 > 编程知识 正文

python排序算法,python大数据分析基础

时间:2023-05-05 03:02:19 阅读:148063 作者:3775

标准BP、累积BP算法的原理以及MATLAB自编真人就在此

以下是自己制作的Python代码。 欢迎您的指出

标准BP算法:

importnumpyasnpx=NP.matrix (NP.random.rand ) 3、 2 ) #输入层随机产生三个样本,每个样本有两个神经元y=NP.matrix (NP.random.rand ) 3,每个样本有两个神经元q=3n=100000 k 存在从隐藏层到输出层权重h:输出层的阈值k:学习率" " deffc _ SIG mod () (1NP.exp(-x ) )、defstandard_BP ) x0,y0,q,n k ) : l=y0.shape [1] n=x0.shape [1] v=NP.matrix q ) w=NP.matrix(NP.random.rand ) q,l ) h=NP l ) ) index=0y_hat=NP L ) ) ITER=1whileitern : a=NP.dot (x [ index ],v ) b=fc_SIGmod(a-r ) b=NP w(#print ) h ) y_hat[index]=fc_SIGmod(B-h ) #e=0.5*NP.dot ) y[index]-y_hat[index],(y ) (1-b )、) w*g.T )、t ) forIinrange(n ) : for j in range(q ) q ) :v(I,j )=v ) I,j ) k*e(0,j ) x j )=w ) I,j ) k*g ) 0,j ) ) b ) 0, I ) h=h-k*gifindex=x0.shape(0)-1:index=index-x0.shape(0)1index=index1iter=iter1print ) )是否为输入层

我发现训练后预测的y_hat值与以前的接近。 当然这里的标准BP算法的实现比较简单~

累积BP算法:

importnumpyasnpx=NP.matrix (NP.random.rand ) 3、 2 ) #输入层随机产生三个样本,每个样本具有两个神经元y=NP.matrix ) NP.random.rand ) 3, 两个神经元q=3n=50000k=0.1''q:隐层单元数v:的从输入层到隐层的权重r:的从隐层到输出层的权重h:的到输出层的阈值k:的学习率" " deffc _ si360 q,n,k ) :l=y.shape(1) n=x.shape(1) v=NP.matrix ) ) NP.shape q ) w=NP.matrix (NP l ) ) b=NP.matrix ) ) NP.random ) ) NP.l ) ) n ) ) e=NP.matrix(NP.Zeros () x.shape[0],q ) ) y _ hed l ) ) ITER=1whileitern : forindexinrange (x.shape [0] ) :a=NP.dot(x[index],v ) b [ index ]=fc _ sshape y [ index ]-y _ hat [ index ] (e [ index ]=NP.multiply (NP.multiply )1-b[index], (1-b[index] )、(w*g(index ).t ) #以下,调整各自系数)对于上述几个系数,平均值b_bar=b.mean(axis=0) e_bar=j )=v ) I,j ) k*e_bar ) 0,j ) *x_bar ) 0,I ) r=r-k*e ) barforIinraange j]*b_bar[0, I ) i] h=h-k*g_bar iter=iter 1 print (输入层到隐藏层的权重为: ) ) print ) v ) print ) )隐藏层的阈值为) print ) r ) print )

这里训练后得到的效果并不高,和自己之前在Matlab中写的累积BP算法一样,训练后得到的y_hat值不太准确。为了得到更正确的模型,可以考虑几个因素

选择隐藏层和输出层的激活函数(这里选择sigmod函数);增加学习因子的迭代次数,增加隐藏层的单元数,设定多个隐藏层(这里只设定一个隐藏层) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。