BP 网 络 程 序
1. 算法说明
BP网络算法是用最速下降法进行推导的,是通过
w1= w0+aΔw(t);
v1= v0+bΔv(t);
迭代产生出 w 和 v的值。此分类其进行预测得出的结果;
2. 程序使用说明
在matlab环境下把程序代码拷入:
参数设置为:
mid=15;
a=0.95;
b=0.95;
s=0.1;
stop_sum=12;
3.输出:
当mid=5;a=0.95;b=0.95;s=0.1;H=1;stop_sum=13;
输出结果为
value = 80
value = 76
value = 79.3333
4.附录
程序清单:
load iris_tr;
train=IRIS_training_data;
[rows,cols]=size(train);
n=4;
q=3;
mid=5;
a=0.95;
b=0.95;
s=0.1;
H=1;
stop_sum=13;
w(1:5,:)=rand(5,mid);
v(1:mid+1,:)=rand(mid+1,3); x(1)=1;z(1)=1;
while H==1
for I=1:rows
for J=1:n
x(J+1)=train(I,J);
end
for J=1:mid
z(J+1)=1/(1+exp(-x*w(:,J)));
end
for J=1:q
y(J)=1/(1+exp(-z*v(:,J)));
y1(I,J)=y(J);
o(J)=train(I,n+J);
o1(I,J)=o(J);
end
for J=1:q
v(:,J)=v(:,J)+b*((o(J)-y(J))*y(J)*(1-y(J))*z');
end
sum=0;
for J=1:mid
for K=1:q
sum=sum+v(J,K)*(o(K)-y(K))*y(K)*(1-y(K));
end
w(:,J)=w(:,J)+a*sum*z(J)*(1-z(J))*x';
end
end
sum_num=0;
for I=1:rows
for J=1:q
sum_num=sum_num+(o1(I,J)-y1(I,J))^2/2;
end
end
if sum_num<stop_sum
break;
end
end
clear z;
clear x;
clear rows;
clear cols;
%预测过程
load iris_te;
test=IRIS_testing_data;
[rows,cols]=size(test);
for I=1:rows
if test(I,6)==1
test(I,5)=2;
end
if test(I,7)==1
test(I,5)=3;
end
end
IRIS=test(:,1:5);
IRIS1=IRIS(:,1:4);
One=ones(75,1);
x=[One IRIS1];
for I=1:rows
z(1)=1;
for J=1:mid
z(J+1)=1/(1+exp(-(x(I,:)*w(:,J))));
end
for J=1:q
y(J)=1/(1+exp(-(z*v(:,J))));
end
clear z;
[g,t]=max(y);
if g>=s
IRIS1(I,5)=t;
end
end
value=0;
for I=1:rows
if IRIS(I,5)==IRIS1(I,5)
value=value+1;
end
end
value=(value/rows)*100