1.BP神经网络(葡萄酒
clear all; clc ; data=[ -1.17 -0.73 2.2 -0.6 -0.34 -0.4 -1.59 -0.15 0.09 -0.42 -0.16 -0.08 -0.75 -0.46 -0.7 -0.69 0.36 0.07 -0.48 0.26 0.46 3.37 -0.29 -0.46 0.37 -0.12 0.87 3.23 1.81 -0.36 0.15 0.15 1.35 -0.5 0.04 0 0.08 0.95 -0.64 0.68 0.18 0.78 -0.54 -0.3 0.62 -0.13 0.1 -1.01 -0.42 -0.31 1.72 -0.11 0.05 0.22 -0.38 0.52 -0.05 0.08 -0.25 -0.12 -0.05 -0.25 -0.12 -0.13 -1.58 -0.49 -2.38 -0.6 -0.97 -0.21 -1.36 -0.74 -0.86 -0.04 -0.67 -0.31 0.77 -0.89 0.72 -0.44 0.47 -0.02 -0.78 -0.56 2.58 -0.27 0.27 1.03 0.16 -0.35 -0.42 0.16 -0.63 -0.51 -0.31 -0.57 -0.29 0.08 -0.56 0.3 -0.89 -0.42 -0.86 -0.44 0.19 -0.23 1.45 -1.12 1.13 -0.46 0.65 -0.25 -0.48 0.26 -0.25 4.14 0.94 -0.94 -0.79 -0.46 1.41 -1.41 1.24 -0.62 -0.97 1.82 -0.38 -0.61 -0.33 -0.24 -1.45 -0.45 -0.32 -0.5 2.36 -0.14 -1.32 -0.46 3.08 -0.48 1.89 0.79 -0.81 0.63 0.14 -0.47 0.1 -1.17 1.55 4.72 -0.91 -1.05 0.09 -0.07 -2.37 -0.15 -2.16 -0.74 -1.34 -0.4 -1.52 -0.86 2.68 0 -0.2 -0.69 0.1 0.85 0.27 -0.03 -0.43 -0.72 -0.24 -0.34 -1.24 1.6 -0.76 -0.31 0.39 -0.51 0 -1.24 -0.85 -0.55 -0.08 -0.15 1.19 0.67 -0.42 -0.41 0.53 0.11 -0.64 0.02 0.83 -0.54 -0.89 -0.04 -0.19 -0.3 0.06 -0.43 1.78 -0.56 -0.17 -0.19 -0.26 -0.33 -0.11 -0.39 1.35 -0.54 1.25 0.31 0.34 -0.46 1.72 -0.57 -0.36 -0.04 -1.2 -0.47 -0.72 0.68 -0.07 -0.5 0.3 1.95 -0.84 0.01 1.02 1.23 -0.37 -0.3 0.71 -0.22 0.37 0.68 -0.17 -0.04 1.03 0.44 -0.54 0.28 -0.1 -0.03 0.77 0.64 -0.32 -0.3 -1.32 0.14 -0.21 -0.18 -0.02 -0.57 0.94 -0.89 -1.57 1.16 0.48 0.58 -0.1 4.74 0.47 -0.28 0.07 0.3 -0.52 -0.36 -0.51 2.02 -0.51 -0.03 0.77 -0.48 -0.31 -0.71 1.09 -0.49 ]; p1=data(3,:); p2=[ data(1,:); data(10,:); data(16,:); data(23,:); data(2,:); data(26,:); data(7,:); data(21,:); data(28,:) ]; p3=[ data(19,:); data(5,:); data(24,:); data(11,:); data(9,:); data(25,:); data(6,:) ]; p4=[ data(22,:); data(27,:); data(13,:); ]; p=[p1;p2;p3;p4]'; pr=minmax(p); goal=[ ones(1,1),zeros(1,19);zeros(1,1),ones(1,9),zeros(1,10); zeros(1,10),ones(1,7),zeros(1,3);zeros(1,17),ones(1,3) ]; net=newff(pr,[7,4],{'logsig','logsig'}); %创建 一个bp 神经网络 %logsig 对数S形传递函数 net.trainParam.show = 10; %显示训练迭代过程,是n个周期后显示一下收敛曲线的变化 net.trainParam.lr = 0.05; %学习速率0.05 net.trainParam.goal = 1e-13; %训练精度 net.trainParam.epochs = 900000; %最大训练次数 net = train(net,p,goal); %训练 x=[ data(20,:); data(12,:); data(18,:); data(15,:); data(8,:); data(4,:); data(14,:); data(17,:) ]'; %待判断数据 y0=sim(net,p) y=sim(net,x) 回归因子,运行结果: y0 = Columns 1 through 9 0.9999 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 1.0000 1.0000 1.0000 0.9999 0.9999 1.0000 1.0000 0.9999 0.0001 0.0000 0.0000 0.0000 0.0000 0.0001 0.0000 0.0001 0.0000 0.0000 0.0001 0.0000 0.0000 0.0000 0.0000 0.0003 0.0000 0.0001 Columns 10 through 18 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.9999 0.0000 0.0000 0.0000 0.0001 0.0000 0.0000 0.0000 0.0000 0.0002 0.9999 0.9999 0.9999 0.9998 0.9999 0.9999 0.9999 0.0007 0.0000 0.0001 0.0000 0.0000 0.0000 0.0000 0.0001 0.0002 0.9997 Columns 19 through 20 0.0000 0.0000 0.0002 0.0000 0.0003 0.0001 0.9998 0.9986 y = 0.0000 0.0001 0.0000 0.3158 0.0000 0.0000 0.9968 0.0000 0.7749 0.0000 0.2577 0.0463 0.9825 0.9996 0.9426 1.0000 1.0000 0.9999 0.0011 0.0114 0.0002 0.0000 0.2173 0.0000 0.0000 0.0000 0.1042 0.0251 0.0996 0.0004 0.0000 0.0001 >> 主成分因子数据运行结果 : y0 = Columns 1 through 9 0.9997 0.0000 0.0000 0.0001 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.0000 0.0000 0.0002 0.0000 0.0000 0.0001 0.0000 0.0000 0.0000 1.0000 1.0000 0.0002 0.0001 0.0001 0.0001 0.0003 0.0000 0.0001 0.0000 0.0000 Columns 10 through 18 0.0000 0.0002 0.0000 0.0000 0.0001 0.0001 0.0000 0.0000 0.0000 0.0000 0.0004 0.0000 0.0000 0.0000 0.0000 0.0001 0.0000 0.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.0001 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.9997 Columns 19 through 20 0.0003 0.0002 0.0001 0.0000 0.0000 0.0000 0.9999 0.9999 y = 0.0004 0.0000 0.9993 0.0001 0.0000 0.0000 0.0000 0.2758 0.2290 0.0016 0.0000 0.0000 0.0000 1.0000 0.9994 0.9886 0.0243 0.0024 0.9986 0.9999 0.0000 0.0000 0.0000 0.0000 0.9992 0.0129 0.0002 0.0000
2.(重金属污染
clc,clear load As a b c data=[a';b']; data=data'; data1=c; k=rand(1,60501); [m n]=sort(k); %获取训练数据与预测数据 input_train=data(n(1:9900),:)'; output_train=data1(n(1:9900),:)'; input_test=data(n(9901:10000),:)'; output_test=data1(n(9901:10000),:)'; %数据归一化 [inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train); %%bp训练%初始化网络结构 net=newff(inputn,outputn,100); net.trainParam.show=30; net.trainParam.epochs=300;%最大迭代次数 net.trainParam.lr=0.01;%学习速率 net.trainParam.goal=1e-6; %网络训练 net=train(net,inputn,outputn);%%bp预测 %预测数据归一化? inputn_test=mapminmax('apply',input_test,inputps);%网络预测输出 an=sim(net,inputn_test);%仿真 %网络输出反归一化 BPoutput=mapminmax('reverse',an,outputps);%结果分析 figure plot(BPoutput,':og'); hold on plot(output_test,'-*'); legend('预测输出','期望输出','fontsize',12) title('BP?网络预测输出','fontsize',12) xlabel('样本','fontsize',12) ylabel('输出','fontsize',12)%预测误差 error=BPoutput-output_test; figure plot(error,'-*') title('神经网络预测误差') errorsum=sum(abs(error)) save data2 net inputps outputps