以辛烷值预测为例
清除全部
clc
%% II .生成培训集/测试集
%%
% 1.导入数据
load NIR.mat%指标数据
load octane.mat%的结果数据相当于函数的y
验证load new_x.mat%中的新数据
%%
% 2.随机生成训练集和测试集
时间=rand perm (size (NIR,1 ); 打乱p个样本的排序
%培训集——40个示例
p_train=NIR(temp(1:40 ), ) ';
t_train=octane(temp(1:40 ), );
%测试集——10个示例
p_test=NIR(temp(41:end ), ) ';
t_test=octane(temp(41:end ), )’;
n=size(p_test,2 );
%% III .数据规范化
[p_train,PS_input]=mapminmax(p_train,0,1 );
P_test=mapminmax(apply )、p_test、ps_input );
[t_train,PS_output]=mapminmax(t_train,0,1 );
%% IV. BP神经网络创建、培训和模拟测试
%%
% 1.创建网络
net=newff(p_train,t_train,9 ); %9是抑制层神经元的数量(大家改变测试结果后会产生影响)。
%%
% 2.设置培训参数
net.trainParam.epochs=1000; %反复次数
net.trainParam.goal=1e-3; %mse均方根误差小于该值的训练结束
net.trainParam.lr=0.01; %学习率
%%
% 3.培训网络
net=train(net,p_train,t_train );
%%
% 4.模拟测试
t_sim=sim(net,p_test ); %返回10个样本的预测值
%%
% 5.数据反规范化
t_sim=mapminmax('reverse ',t_sim,ps_output ); %逆正规化结果
%% V .性能评估
%%
% 1.相对误差错误
error=ABS(t_sim-t_test )./T_test;
%%
% 2.决策系数R^2
R2=(n*sum(t_sim.*t_test )-sum ) t_sim (sum ) t_test ) )n*sum ) ) t _ sim ().^2) )
%%
% 3.比较结果
result=[T_test' T_sim' error'] %输出真值、预测值和误差
%% VI .绘图
figure(1)。
plot(1:N,T_test,' b:* ',1:n,T_sim,' r-o ' )
霍尔德on
是打印(error )
legend (“真值”、“预测值”)
xlabel (预测样本) )。
ylabel ()辛烷值) ) ) ) )。
string={ '测试集辛烷值含量预测结果比较'; ['r^2='num2str(R2 ) ];
是title (字符串)
%% VII .预测新数据
predict _ y=zeros (10,1 );
for i=1: 10
result1=sim(net,new_x(i ) I, ) '; %调用培训的网络进行预测
result=mapminmax('reverse ',result1,ps_output ); %逆正规化处理
predict_y(I )=result; %获得最终数据预测值
结束
disp ('预测值为) ) )
disp(predict_y )