网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月12日漏签0天
matlab吧 关注:291,693贴子:1,657,984
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 2回复贴,共1页
<<返回matlab吧
>0< 加载中...

求助,matlab进行BP神经网络报错

  • 只看楼主
  • 收藏

  • 回复
  • shakalaka828
  • 自带板凳
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
具体代码和报错提示如下:
%% 清空环境变量warning off % 关闭报警信息close all % 关闭开启的图窗clear % 清空变量clc % 清空命令行% restoredefaultpath%% 导入数据data=readtable('数据集.xlsx'); %使用xlsread函数读取EXCEL中对应范围的数据即可 res = table2array(data);%% 数据分析num_size = 0.8; % 训练集占数据集比例outdim = 1; % 最后一列为输出num_samples = size(res, 1); % 样本个数res = res(randperm(num_samples), :); % 打乱数据集(不希望打乱时,注释该行)num_train_s = round(num_size * num_samples); % 训练集样本个数f_ = size(res, 2) - outdim; % 输入特征维度%% 划分训练集和测试集P_train = res(1: num_train_s, 1: f_)';T_train = res(1: num_train_s, f_ + 1: end)';M = size(P_train, 2);P_test = res(num_train_s + 1: end, 1: f_)';T_test = res(num_train_s + 1: end, f_ + 1: end)';N = size(P_test, 2);%% 数据归一化[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);t_test = mapminmax('apply',T_test,ps_output);%% 节点个数inputnum = size(p_train, 1); % 输入层节点数hiddennum = 15; % 隐藏层节点数outputnum = size(t_train, 1); % 输出层节点数%% 构建网络net = newff(p_train, t_train, hiddennum);%% 设置训练参数net.trainParam.epochs = 50; % 训练次数net.trainParam.goal = 1e-4; % 目标误差net.trainParam.lr = 0.01; % 学习率net.trainParam.showWindow = 0; % 关闭窗口%% 参数设置fun = @getObjValue; % 目标函数dim = inputnum * hiddennum + hiddennum * outputnum + ... hiddennum + outputnum; % 优化参数个数lb = -1 * ones(1, dim); % 优化参数目标下限ub = 1 * ones(1, dim); % 优化参数目标上限pop = 20; % 数量Max_iteration = 10; % 最大迭代次数 %% 麻雀优化算法% [Best_score,Best_pos,curve] = SSA(pop, Max_iteration, lb, ub, dim, fun); %% 冠豪猪优化算法% [Best_score,Best_pos,curve] = CPO(pop, Max_iteration, lb, ub, dim, fun);%% 鹅优化算法% [Best_score,Best_pos,curve] = GOOSE(pop, Max_iteration, lb, ub, dim, fun);%% HO河马优化算法% [Best_score,Best_pos,curve] = HO(pop, Max_iteration, lb, ub, dim, fun);%% PO鹦鹉优化算法% [~,Best_pos,Best_score,curve,~,~] = PO(pop, Max_iteration, lb, ub, dim, fun);%% DBO蜣螂优化算法% [Best_score, Best_pos, curve] = DBO(pop, Max_iteration, lb, ub, dim, fun);%% GWO灰狼优化算法[Best_score, Best_pos, curve] = GWO(pop, Max_iteration, lb, ub, dim, fun);%% 把最优初始阀值权值赋予网络预测w1 = Best_pos(1 : inputnum * hiddennum);B1 = Best_pos(inputnum * hiddennum + 1 : inputnum * hiddennum + hiddennum);w2 = Best_pos(inputnum * hiddennum + hiddennum + 1 : inputnum * hiddennum + hiddennum + hiddennum*outputnum);B2 = Best_pos(inputnum * hiddennum + hiddennum + hiddennum * outputnum + 1 : ... inputnum * hiddennum + hiddennum + hiddennum * outputnum + outputnum);net.Iw{1, 1} = reshape(w1, hiddennum, inputnum);net.Lw{2, 1} = reshape(w2, outputnum, hiddennum);net.b{1} = reshape(B1, hiddennum, 1);net.b{2} = B2';%% 网络训练net.trainParam.showWindow = 1; % 打开窗口net = train(net, p_train, t_train);%% BP网络预测t_sim1 = sim(net, p_train);t_sim2 = sim(net, p_test);%% 数据反归一化T_sim1 = mapminmax('reverse',t_sim1,ps_output);T_sim2 = mapminmax('reverse',t_sim2,ps_output);%% 均方根误差error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M);error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N);%% 优化曲线figureplot(curve, 'linewidth',1.5);title('优化曲线')xlabel('The number of iterations')ylabel('Fitness')grid on;set(gcf,'color','w')%% 绘图%% 测试集结果figure;plotregression(T_test,T_sim2,['回归图']);set(gcf,'color','w')figure;ploterrhist(T_test-T_sim2,['误差直方图']);set(gcf,'color','w')%% 均方根误差 RMSEerror1 = sqrt(sum((T_sim1 - T_train).^2)./M);error2 = sqrt(sum((T_test - T_sim2).^2)./N);%%%决定系数R1 = 1 - norm(T_train - T_sim1)^2 / norm(T_train - mean(T_train))^2;R2 = 1 - norm(T_test - T_sim2)^2 / norm(T_test - mean(T_test ))^2;%%%均方误差 MSEmse1 = sum((T_sim1 - T_train).^2)./M;mse2 = sum((T_sim2 - T_test).^2)./N;%%%RPD 剩余预测残差SE1=std(T_sim1-T_train);RPD1=std(T_train)/SE1;SE=std(T_sim2-T_test);RPD2=std(T_test)/SE;%% 平均绝对误差MAEMAE1 = mean(abs(T_train - T_sim1));MAE2 = mean(abs(T_test - T_sim2));%% 平均绝对百分比误差MAPEMAPE1 = mean(abs((T_train - T_sim1)./T_train));MAPE2 = mean(abs((T_test - T_sim2)./T_test));%% 训练集绘图figureplot(1:M,T_train,'r-*',1:M,T_sim1,'b-o','LineWidth',1.5)legend('真实值','优化BP预测值')xlabel('预测样本')ylabel('预测结果')string={'训练集预测结果对比';['(R^2 =' num2str(R1) ' RMSE= ' num2str(error1) ' MSE= ' num2str(mse1) ' RPD= ' num2str(RPD1) ')' ]};title(string)set(gcf,'color','w')%% 预测集绘图figureplot(1:N,T_test,'r-*',1:N,T_sim2,'b-o','LineWidth',1.5)legend('真实值','优化BP预测值')xlabel('预测样本')ylabel('预测结果')string={'测试集预测结果对比';['(R^2 =' num2str(R2) ' RMSE= ' num2str(error2) ' MSE= ' num2str(mse2) ' RPD= ' num2str(RPD2) ')']};title(string)set(gcf,'color','w')%% 测试集误差图figure ERROR3=T_test-T_sim2;plot(T_test-T_sim2,'b-*','LineWidth',1.5)xlabel('测试集样本编号')ylabel('预测误差')title('测试集预测误差')grid on;legend('优化BP预测输出误差')set(gcf,'color','w')%% 绘制线性拟合图%% 训练集拟合效果图figureplot(T_train,T_sim1,'*r');xlabel('真实值')ylabel('预测值')string = {'训练集效果图';['R^2_c=' num2str(R1) ' RMSEC=' num2str(error1) ]};title(string)hold on ;h=lsline;set(h,'LineWidth',1,'LineStyle','-','Color',[1 0 1])set(gcf,'color','w')%% 预测集拟合效果图figureplot(T_test,T_sim2,'ob');xlabel('真实值')ylabel('预测值')string1 = {'测试集效果图';['R^2_p=' num2str(R2) ' RMSEP=' num2str(error2) ]};title(string1)hold on ;h=lsline();set(h,'LineWidth',1,'LineStyle','-','Color',[1 0 1])set(gcf,'color','w')%% 求平均R3=(R1+R2)./2;error3=(error1+error2)./2;%% 总数据线性预测拟合图tsim=[T_sim1,T_sim2]';S=[T_train,T_test]';figureplot(S,tsim,'ob');xlabel('真实值')ylabel('预测值')string1 = {'所有样本拟合预测图';['R^2_p=' num2str(R3) ' RMSEP=' num2str(error3) ]};title(string1)hold on ;h=lsline();set(h,'LineWidth',1,'LineStyle','-','Color',[1 0 1])set(gcf,'color','w')%% 打印出评价指标disp(['-----------------------误差计算--------------------------'])disp(['评价结果如下所示:'])disp(['平均绝对误差MAE为:',num2str(MAE2)])disp(['均方误差MSE为: ',num2str(mse2)])disp(['均方根误差RMSEP为: ',num2str(error2)])disp(['决定系数R^2为: ',num2str(R2)])disp(['剩余预测残差RPD为: ',num2str(RPD2)])disp(['平均绝对百分比误差MAPE为: ',num2str(MAPE2)])grid


  • shakalaka828
  • 自带板凳
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
错误使用 network/subsasgn>network_subsasgn (第 555 行)
net.IW{1,1} must be a 15-by-8 matrix.
出错 索引 (第 14 行)
net = network_subsasgn(net,subscripts,v,netname);
出错 getObjValue (第 28 行)
net.Iw{1, 1} = reshape(w1, hiddennum, inputnum);
出错 GWO (第 50 行)
fitness=fobj(Positions(i,:));
出错 main (第 71 行)
[Best_score, Best_pos, curve] = GWO(pop, Max_iteration, lb, ub, dim, fun);
>>


2025-06-12 04:34:30
广告
  • lhmhz
  • 内牛满面
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你检查一下,IW{1,1}不是是一个15乘8的矩阵?


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回matlab吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示