我有76个数据,用BP神经网络来做预测,预测效果在这组数据上一直不好,但是其他数据上效果不错,请大家帮忙看看,是哪里出了问题?不甚感谢
%% I. 清空环境变量
clear all
clc
%% II. 训练集/测试集产生
%%
% 1. 导入数据
% load spectra_data.mat
filename1 = 'input76_gai.xlsx';
filename2 = 'output76_gai.xlsx';
input = xlsread(filename1); %读取输入参数
output=xlsread(filename2); %读取输入参数
%%
% 2. 随机产生训练集和测试集
temp = randperm(size(input,1));
% 训练集——65个样本
P_train = input(temp(1:65),:)';
T_train = output(temp(1:65),:)';
% 测试集——11个样本
P_test = input(temp(66:end),:)';
T_test = output(temp(66:end),:)';
N = size(P_test,2);
p_train=P_train;
p_test=P_test;
t_train=T_train;
%% IV. BP神经网络创建、训练及仿真测试
%%
% 1. 创建网络
net = feedforwardnet([4]);
%% 2. 设置训练参数
net.trainFcn='trainlm';
net.trainParam.epochs =15000;
net.trainParam.goal = 1e-4;
net.trainParam.lr = 0.05;
%%
net.divideFcn = ''; %清除'dividerand'。该函数把样本数据三分为训练集、验证集和测试集,默认比例是6:2:2。程序中清除该属性再训练:
%%
% 3. 训练网络
net = train(net,p_train,t_train);
%%
% 4. 仿真测试
t_sim = sim(net,p_test);
%%
T_sim=t_sim;
%% V. 性能评价
%%
perf=perform(net,p_train,t_train);
perf1=mse(net,p_train,t_train);
% 1. 相对误差error
relative_error = abs(T_sim - T_test)./T_test;
absolute_error=abs(T_sim - T_test);
%%
% 2. 决定系数R^2
R2 = (N .* sum(T_sim(1,:) .* T_test(1,:)) - sum(T_sim(1,:)) .* sum(T_test(1,:))).^2 / ((N .* sum((T_sim(1,:)).^2) - (sum(T_sim(1,:))).^2) .* (N .* sum((T_test(1,:)).^2) - (sum(T_test(1,:))).^2));
%%
% 3. 结果对比
result = [T_test' T_sim' absolute_error' relative_error'];
error_max=sortrows(abs(relative_error'),1,'descend');
[n3,m3]=size(output);
%%
ylabelname=["回弹"];
stringname=["测试集回弹预测结果对比"];
for i=1:m3
% 2. 决定系数R^2(B站公式)
R2(i) = (N .* sum(T_sim(i,:) .* T_test(i,:)) - sum(T_sim(i,:)) .* sum(T_test(i,:))).^2/((N .* sum((T_sim(i,:)).^2) - (sum(T_sim(i,:))).^2) .* (N .* sum((T_test(i,:)).^2) - (sum(T_test(i,:))).^2));
% 2. 决定系数R^2(书上公式)
R22(i)=1-(sum((T_test(i,:)-T_sim(i,:)).^2)/sum((T_test(i,:)-mean(T_test(i,:))).^2)) ;
%% VI. 绘图
figure
plot(1:N,T_test(i,:),'b:*',1:N,T_sim(i,:),'r-o')
legend('真实值','预测值')
xlabel('预测样本')
ylabel(ylabelname(i))
string = {stringname(i);['R^2=' num2str(R2(i))]};
title(string)
end
save netBP net;
2021-1-18 10:46 上传
点击文件名下载附件
818 Bytes, 下载次数: 3
2021-1-18 10:48 上传
点击文件名下载附件
713 Bytes, 下载次数: 3