📄 bp_beer.m
字号:
%Function BeerFaceorEval_1
%
clear all;
%--------------14指标数据------------------
%--------------构造训练样本数据------------
%构造输入训练数据,来源于20组数据中的前15组数据
%原汁麦浓度,酒精含量,PH值,缓冲容量,总酸,乙酸,丙酮酸,柠檬酸,苹果酸,琥珀酸,乳酸,己酸,辛酸,葵酸
Data(1,:)=[11.8 3.8 4.44 4.02 1.75 30.77 25.95 144.99 105.64 127.63 47.44 2.76 4.76 1.010];%虎牌
Data(2,:)=[11.2 3.8 4.49 4.23 1.62 51.60 50.39 109.59 86.050 88.990 51.52 2.85 4.32 0.680];%舒伯乐超爽
Data(3,:)=[11.2 3.6 4.47 4.25 1.84 31.61 54.37 127.31 94.140 132.78 46.36 2.59 3.24 0.570];%贝克
Data(4,:)=[11.0 3.5 4.47 3.92 1.42 24.18 28.39 67.450 68.570 89.350 43.72 2.16 4.05 0.640];%百威
Data(5,:)=[11.0 5.0 4.46 4.35 1.89 56.04 23.66 111.79 183.97 95.390 74.27 2.98 4.96 1.360];%喜力
Data(6,:)=[11.0 3.4 4.38 4.28 1.75 75.00 28.56 85.850 118.67 116.58 65.25 3.38 5.36 1.210];%燕京
Data(7,:)=[11.0 3.4 4.11 4.78 1.45 63.74 16.94 70.450 58.360 102.71 78.53 2.37 4.25 0.930];%力波超爽
Data(8,:)=[11.0 3.4 4.26 4.47 1.57 21.98 50.08 93.410 75.020 122.79 79.13 1.85 3.74 0.540];%力波加钙
Data(9,:)=[11.0 3.4 4.31 4.11 1.85 39.56 50.02 79.950 73.210 125.44 77.45 2.18 4.15 0.840];%力波清爽
Data(10,:)=[11.0 3.4 4.39 4.58 1.64 52.75 23.52 106.11 75.600 158.57 68.26 2.67 4.66 1.33];%力波特醇
Data(11,:)=[11.0 4.3 4.41 3.96 1.98 46.15 19.64 79.610 131.89 153.76 74.70 1.56 3.54 0.360];%青岛
Data(12,:)=[10.0 3.1 4.41 4.30 1.54 90.56 20.09 107.16 62.600 90.210 86.36 3.18 5.16 0.940];%金力波
Data(13,:)=[10.0 2.6 4.24 4.29 1.51 40.66 32.03 91.380 72.930 126.78 50.63 3.05 5.06 0.980];%大富豪博士
Data(14,:)=[10.0 2.8 4.02 5.21 1.98 41.76 31.73 69.030 68.280 82.330 65.12 4.39 6.48 1.210];%汇泉小麦
Data(15,:)=[10.0 3.1 4.13 4.81 1.48 62.02 39.99 91.820 121.34 98.380 71.92 2.37 4.35 1.030];%珠江纯生
Data=Data';
%构造输出训练数据
Eval=[85 89 91 95 92 88 82 80 79 75 93 75 80 78 85];
% [pn, meanp,stdp,tn,meant,stdt]=prestd(Data,Eval);%归一化处理
% Data=pn;
% Eval=tn;
%-------------------------------------
%---------构造出验证验证样本数据--------
%构造验证数据,来源于20组数据中的另外5组数据
ValiData(1,:)=[10.0 3.1 4.12 4.41 1.59 48.41 42.43 98.060 90.090 118.180 56.20 2.33 3.12 0.480];
ValiData(2,:)=[9.50 3.6 4.24 4.36 1.43 79.56 25.27 92.620 51.200 125.31 79.23 2.57 4.55 1.230];
ValiData(3,:)=[9.50 3.6 4.39 3.88 1.66 49.45 30.75 98.170 55.400 77.580 55.04 1.76 3.74 0.450];
ValiData(4,:)=[8.00 2.4 4.01 5.12 2.11 37.36 37.36 101.20 52.360 95.930 67.25 1.86 3.85 0.540];
ValiData(5,:)=[8.00 2.8 4.49 3.78 1.73 54.95 31.93 98.650 72.660 77.320 63.94 3.88 5.87 1.070];
ValiData=ValiData';
ValiEval=[79 72 74 80 84];
% [pn, meanp,stdp,tn,meant,stdt]=prestd(ValiData,ValiEval);%归一化处理
% ValiData=pn;
% ValiEval=tn;
%-------------------------------------
MinMaxVal=minmax(Data);%获得每个输入变量在15次样本中的最大和最小值
%构造一个Bp网络
% HiddenLayerNum=30;%隐层神经元个数
% HiddenLayerNum=29;
% HiddenLayerNum=28;
% HiddenLayerNum=27;
% HiddenLayerNum=26;
% HiddenLayerNum=25;
% HiddenLayerNum=31;
% HiddenLayerNum=32;
% HiddenLayerNum=33;
% HiddenLayerNum=34;
%HiddenLayerNum=35;
% HiddenLayerNum=36;
OutputLayerNum=1;%输出层神经元个数
tic
EvalNet=newff(MinMaxVal,[HiddenLayerNum,OutputLayerNum],{'tansig','purelin'},'trainlm');%'purelin
%设定训练参数
EvalNet.trainParam.epochs=2000;
EvalNet.trainParam.goal=1e-3;
EvalNet.trainParam.min_grad=1e-7;
%用上述数据进行训练,得到训练后的新的网络NewEvalNet
[NewEvalNet,tr,Y,E,Pf,Af]=train(EvalNet,Data,Eval);
toc
%----------------验证网络----------------
%采用原来的数据进行验证
SimNewEval=sim(NewEvalNet,Data);
SimErr=SimNewEval-Eval
SimRecRate=1-SimErr/Eval%正确率
figure(2);
plot([1:15],SimNewEval,'o-r',[1:15],Eval,'+-b');grid on;box on;
xlabel('');
ylabel('');
% legend('模型预测曲线','专家评估曲线',4);
save SimNewEval SimNewEval;
%
%采用测试数据进行验证
ValiNewEval=sim(NewEvalNet,ValiData);
ValiErr=ValiNewEval-ValiEval
ValiRecRate=1-ValiErr/ValiEval%正确率
figure(3);
plot([1:5],ValiNewEval,'o-r',[1:5],ValiEval,'+-b');grid on;box on;
xlabel('');
ylabel('');
save ValiNewEval ValiNewEval;
'回归误差'
res=norm(ValiErr)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -