clear
close all
clc
%打开数据集
input=xlsread('BP训练数据','训练1','B9:M17')
output=xlsread('BP训练数据','训练1','B19:M21')
%训练集、测试集
input_train=input(:,1:7);
output_train=output(:,1:7);
input_test=input(:,8:end);
output_test=output(:,8:end);
%数据归一化
[inputn,inputps]=mapminmax(input_train,0,1);
[outputn,outputps]=mapminmax(output_train);
inputn_test=mapminmax('apply',input_test,inputps);
%构建BP神经网络
net=newff(inputn,outputn,4)
%网络参数
net.trainParam.epochs=1000;
net.trainParam.lr=0.01;
net.trainParam.goal=0.0000001;
%BP神经网络训练
net=train(net,inputn,outputn);
%BP神经网络测试
an=sim(net,inputn_test); %用训练好的模型进行仿真
test_simu=mapminmax('reverse',an,outputps); %预测结果反归一化
error=test_simu-output_test; %预测值与真实值的误差
%真实值与预测值的误差比较
figure(1)
plot(output_test,'bo-')
hold on
plot(test_simu,'r*-')
hold on
plot(error,'square','MarkerFaceColor','b')
legend('期望值','预测值','误差')
xlabel('数据数组'),
ylabel('值')
title('测试集预测值和期望值的误差对比')
set(gca,'fontsize')
%计算误差
[~,len]=size(output_test);
MAE1=sum(abs(error./output_test))/len;
MSE1=sum(error.^2)/len;
RMSE1=MSE1.^(1/2);
disp(['-------------计算误差--------------'])
disp(['平均绝对误差MAE为:',num2str(MAE1)])
disp(['均方误差MSE为:',num2str(MSE1)])
disp(['均方根误差RMSE为:',num2str(MAE1)])
(为什么我插不进图片。。。)
Matlab神经网络预测模型测试验证集与误差集的图中,每个值都出现了四条线,这是为什么呢?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-Joel 2022-02-16 20:28关注
你的训练样本是7个,测试样本是5个,得到的output_test、test_simu和error应该都是3行5列的矩阵,matlab用plot(A),如果A是矩阵的话,会画出每一列数据的线,也就是你每个数据应该画了5条曲线
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog