当前位置: 首页 > news >正文

网站制作经费预算怎么创建公众号步骤

网站制作经费预算,怎么创建公众号步骤,做网站温州,设计拓者吧官网本文以MATLAB自带的脂肪数据集为例#xff0c;数据集为EXCEL格式#xff0c;接下来介绍粒子群算法优化BP神经网络预测的MATLAB代码步骤#xff0c;主要流程包括1. 读取数据 2.划分训练集和测试集 3.归一化 4.确定BP神经网络的隐含层最优节点数量 5. 使用粒子群算法优化BP的神… 本文以MATLAB自带的脂肪数据集为例数据集为EXCEL格式接下来介绍粒子群算法优化BP神经网络预测的MATLAB代码步骤主要流程包括1. 读取数据 2.划分训练集和测试集 3.归一化 4.确定BP神经网络的隐含层最优节点数量 5. 使用粒子群算法优化BP的神经网络权重和阈值 6. 利用优化后的参数训练BP神经网络 7. 计算BP和PSO-BP的测试集预测误差包括MAE、RMSE、MAPE、拟合优度R方以及作优化前后的预测值和真实值对比图。 一般来说通过加入启发式算法以及调试好参数后模型的预测性能将具有明显的提升。下图是优化结果相对误差从28%降低到7%粒子群算法的优化效果非常明显。 以下是粒子群算法PSO优化BP预测代码 1. 初始化代码 clear % 清除工作区防止工作区存在相关变量对代码产生影响 close all % 关闭所有已有图像 clc % 清空命令行窗口2. 读取数据代码 dataxlsread(数据.xlsx,Sheet1,A1:N252); %%使用xlsread函数读取EXCEL中对应范围的数据即可 %输入输出数据 inputdata(:,1:end-1); %data的第一列-倒数第二列为特征指标 outputdata(:,end); %data的最后面一列为输出的指标值如果从博客直接复制代码因为没有EXCEL文件可用以下三行代码替换上面datainputoutput三个变量的赋值命令 % 生成加法器数据集 input rand(252, 13); % 13个加数作为输入共252组加法题 output sum(input, 2); % 13个加数之和作为输出 data [input, output]; % 合并输入与输出数据集 3. 划分训练集、测试集代码 Nlength(output); %全部样本数目 testNum15; %设定测试样本数目 trainNumN-testNum; %计算训练样本数目input_train input(1:trainNum,:); output_train output(1:trainNum); input_test input(trainNum1:trainNumtestNum,:); output_test output(trainNum1:trainNumtestNum);4. 数据归一化代码 [inputn,inputps]mapminmax(input_train,0,1); [outputn,outputps]mapminmax(output_train); inputn_testmapminmax(apply,input_test,inputps);5. 确定隐含层节点个数代码 inputnumsize(input,2); outputnumsize(output,2); disp(/) disp(神经网络结构...) disp([输入层的节点数为,num2str(inputnum)]) disp([输出层的节点数为,num2str(outputnum)]) disp( ) disp(隐含层节点的确定过程...)%确定隐含层节点个数 %采用经验公式hiddennumsqrt(mn)am为输入层节点个数n为输出层节点个数a一般取为1-10之间的整数 MSE1e5; %初始化最小误差 for hiddennumfix(sqrt(inputnumoutputnum))1:fix(sqrt(inputnumoutputnum))10%构建网络netnewff(inputn,outputn,hiddennum);% 网络参数net.trainParam.epochs1000; % 训练次数net.trainParam.lr0.01; % 学习速率net.trainParam.goal0.000001; % 训练目标最小误差% 网络训练nettrain(net,inputn,outputn);an0sim(net,inputn); %仿真结果mse0mse(outputn,an0); %仿真的均方误差disp([隐含层节点数为,num2str(hiddennum),时训练集的均方误差为,num2str(mse0)])%更新最佳的隐含层节点if mse0MSEMSEmse0;hiddennum_besthiddennum;end end disp([最佳的隐含层节点数为,num2str(hiddennum_best),相应的均方误差为,num2str(MSE)])以下是运行代码后在命令行窗口打印的神经网络结构 / 神经网络结构... 输入层的节点数为13 输出层的节点数为1隐含层节点的确定过程... 隐含层节点数为4时训练集的均方误差为0.031275 隐含层节点数为5时训练集的均方误差为0.034734 隐含层节点数为6时训练集的均方误差为0.035053 隐含层节点数为7时训练集的均方误差为0.027684 隐含层节点数为8时训练集的均方误差为0.030898 隐含层节点数为9时训练集的均方误差为0.031399 隐含层节点数为10时训练集的均方误差为0.027933 隐含层节点数为11时训练集的均方误差为0.029294 隐含层节点数为12时训练集的均方误差为0.046231 隐含层节点数为13时训练集的均方误差为0.031752 最佳的隐含层节点数为7相应的均方误差为0.0276846. 构建最佳隐含层节点的BP神经网络代码 disp( ) disp(标准的BP神经网络) net0newff(inputn,outputn,hiddennum_best,{tansig,purelin},trainlm);% 建立模型%网络参数配置 net0.trainParam.epochs1000; % 训练次数这里设置为1000次 net0.trainParam.lr0.01; % 学习速率这里设置为0.01 net0.trainParam.goal0.00001; % 训练目标最小误差这里设置为0.0001 net0.trainParam.show25; % 显示频率这里设置为每训练25次显示一次 net0.trainParam.mc0.01; % 动量因子 net0.trainParam.min_grad1e-6; % 最小性能梯度 net0.trainParam.max_fail6; % 最高失败次数%开始训练 net0train(net0,inputn,outputn);%预测 an0sim(net0,inputn_test); %用训练好的模型进行仿真%预测结果反归一化与误差计算 test_simu0mapminmax(reverse,an0,outputps); %把仿真得到的数据还原为原始的数量级%误差指标 [mae0,mse0,rmse0,mape0,error0,errorPercent0]calc_error(output_test,test_simu0); 以下是对BP神经网络预测结果的性能评估 标准的BP神经网络 平均绝对误差mae为 4.7787 均方误差mse为 30.1094 均方误差根rmse为 5.4872 平均绝对百分比误差mape为 23.8809 %7. 粒子群算法寻最优权值阈值代码 disp( ) disp(PSO优化BP神经网络) netnewff(inputn,outputn,hiddennum_best,{tansig,purelin},trainlm);% 建立模型%网络参数配置 net.trainParam.epochs1000; % 训练次数这里设置为1000次 net.trainParam.lr0.01; % 学习速率这里设置为0.01 net.trainParam.goal0.00001; % 训练目标最小误差这里设置为0.0001 net.trainParam.show25; % 显示频率这里设置为每训练25次显示一次 net.trainParam.mc0.01; % 动量因子 net.trainParam.min_grad1e-6; % 最小性能梯度 net.trainParam.max_fail6; % 最高失败次数%初始化PSO参数 popsize10; %初始种群规模 maxgen50; %最大进化代数 diminputnum*hiddennum_besthiddennum_besthiddennum_best*outputnumoutputnum; %自变量个数 lbrepmat(-3,1,dim); %自变量下限 ubrepmat(3,1,dim); %自变量上限 c1 2; % 每个粒子的个体学习因子也称为个体加速常数 c2 2; % 每个粒子的社会学习因子也称为社会加速常数 w 0.9; % 惯性权重 vmax 3*ones(1,dim); % 粒子的最大速度 vmaxrepmat(vmax,popsize,1); x zeros(popsize,dim); for i 1: dimx(:,i) lb(i) (ub(i)-lb(i))*rand(popsize,1); % 随机初始化粒子所在的位置在定义域内 end v -vmax 2*vmax .* rand(popsize,dim); % 随机初始化粒子的速度设置为[-vmax,vmax]8. 计算适应度代码 fit zeros(popsize,1); % 初始化这n个粒子的适应度全为0 for i 1:popsize % 循环整个粒子群计算每一个粒子的适应度fit(i) fitness(x(i,:),inputnum,hiddennum_best,outputnum,net,inputn,outputn,output_train,inputn_test,outputps,output_test); % 调用函数来计算适应度 end pbest x; % 初始化这n个粒子迄今为止找到的最佳位置 ind find(fit min(fit), 1); % 找到适应度最小的那个粒子的下标 gbest x(ind,:); % 定义所有粒子迄今为止找到的最佳位置9. 迭代寻优代码 Convergence_curve ones(maxgen,1); % 初始化每次迭代得到的最佳的适应度 h0 waitbar(0,进度,Name,PSO optimization...,...CreateCancelBtn,setappdata(gcbf,canceling,1)); setappdata(h0,canceling,0);for d 1:maxgen % 开始迭代一共迭代K次for i 1:popsize % 依次更新第i个粒子的速度与位置v(i,:) w*v(i,:) c1*rand(1)*(pbest(i,:) - x(i,:)) c2*rand(1)*(gbest - x(i,:)); % 更新第i个粒子的速度% 如果粒子的速度超过了最大速度限制就对其进行调整for j 1: dimif v(i,j) -vmax(j)v(i,j) -vmax(j);elseif v(i,j) vmax(j)v(i,j) vmax(j);endendx(i,:) x(i,:) v(i,:); % 更新第i个粒子的位置% 如果粒子的位置超出了定义域就对其进行调整for j 1: dimif x(i,j) lb(j)x(i,j) lb(j);elseif x(i,j) ub(j)x(i,j) ub(j);endend%更新第i个粒子的适应度fit(i) fitness(x(i,:),inputnum,hiddennum_best,outputnum,net,inputn,outputn,output_train,inputn_test,outputps,output_test);%更新当前最优粒子位置if fit(i) fitness(pbest(i,:),inputnum,hiddennum_best,outputnum,net,inputn,outputn,output_train,inputn_test,outputps,output_test) % 如果第i个粒子的适应度小于这个粒子迄今为止找到的最佳位置对应的适应度pbest(i,:) x(i,:); % 那就更新第i个粒子迄今为止找到的最佳位置end%更新历史最优粒子位置if fitness(pbest(i,:),inputnum,hiddennum_best,outputnum,net,inputn,outputn,output_train,inputn_test,outputps,output_test) fitness(gbest,inputnum,hiddennum_best,outputnum,net,inputn,outputn,output_train,inputn_test,outputps,output_test) % 如果第i个粒子的适应度小于所有的粒子迄今为止找到的最佳位置对应的适应度gbest pbest(i,:); % 那就更新所有粒子迄今为止找到的最佳位置endendConvergence_curve(d) fitness(gbest,inputnum,hiddennum_best,outputnum,net,inputn,outputn,output_train,inputn_test,outputps,output_test); % 更新第d次迭代得到的最佳的适应度waitbar(d/maxgen,h0,[num2str(d/maxgen*100),%])if getappdata(h0,canceling)breakend end delete(h0) Best_pos gbest; Best_score Convergence_curve(end); setdemorandstream(pi); % 绘制进化曲线 figure plot(Convergence_curve,r-,linewidth,2) xlabel(进化代数) ylabel(均方误差) legend(最佳适应度) title(PSO的进化收敛曲线) w1Best_pos(1:inputnum*hiddennum_best); %输入层到中间层的权值 B1Best_pos(inputnum*hiddennum_best1:inputnum*hiddennum_besthiddennum_best); %中间各层神经元阈值 w2Best_pos(inputnum*hiddennum_besthiddennum_best1:inputnum*hiddennum_besthiddennum_besthiddennum_best*outputnum); %中间层到输出层的权值 B2Best_pos(inputnum*hiddennum_besthiddennum_besthiddennum_best*outputnum1:inputnum*hiddennum_besthiddennum_besthiddennum_best*outputnumoutputnum); %输出层各神经元阈值 %矩阵重构 net.iw{1,1}reshape(w1,hiddennum_best,inputnum); net.lw{2,1}reshape(w2,outputnum,hiddennum_best); net.b{1}reshape(B1,hiddennum_best,1); net.b{2}reshape(B2,outputnum,1);10. 优化后的神经网络训练代码 nettrain(net,inputn,outputn);%开始训练其中inputn,outputn分别为输入输出样本11. 优化后的神经网络测试代码 an1sim(net,inputn_test); test_simu1mapminmax(reverse,an1,outputps); %把仿真得到的数据还原为原始的数量级 %误差指标 [mae1,mse1,rmse1,mape1,error1,errorPercent1]calc_error(output_test,test_simu1);以下是对优化后的BP神经网络预测结果的性能评估相对误差从28%降低到7%粒子群算法的优化效果非常明显。 平均绝对误差mae为 1.5899 均方误差mse为 3.343 均方误差根rmse为 1.8284 平均绝对百分比误差mape为 7.0475 %12. BP预测结果和PSO-BP预测结果对比作图代码 figure plot(output_test,b-*,linewidth,1) hold on plot(test_simu0,r-v,linewidth,1,markerfacecolor,r) hold on plot(test_simu1,k-o,linewidth,1,markerfacecolor,k) legend(真实值,BP预测值,PSO-BP预测值) xlabel(测试样本编号) ylabel(指标值) title(PSO优化前后的BP神经网络预测值和真实值对比图)figure plot(error0,rv-,markerfacecolor,r) hold on plot(error1,ko-,markerfacecolor,k) legend(BP预测误差,PSO-BP预测误差) xlabel(测试样本编号) ylabel(预测偏差) title(PSO优化前后的BP神经网络预测值和真实值误差对比图)disp( ) disp(/) disp(打印结果表格) disp(样本序号 实测值 BP预测值 PSO-BP值 BP误差 PSO-BP误差) for i1:testNumdisp([i output_test(i),test_simu0(i),test_simu1(i),error0(i),error1(i)]) end下图是运行后粒子群算法的适应度曲线也叫进化曲线。从图中可以看出随着迭代次数的增加神经网络预测误差在不断下降约47代达到终值。 PSO-BP和BP预测结果对比图如下图中带星号蓝线表示真实值红线表示BP预测结果黑线表示PSO优化后的BP预测结果可以看到黑线和蓝线最为接近也说明PSO对BP预测结果起到了优化作用。 分别对PSO-BP和BP的预测结果与真实值做误差误差计算的结果见下图可以看到PSO-BP误差稳定在±3内而BP预测误差在±10内也可说明PSO-BP的优化效果明显。 以上便是粒子群算法优化BP神经网络的代码解读以及结果分析。如果遇到问题请直接在评论区留言或者在CSDN私信交流
http://www.pierceye.com/news/967851/

相关文章:

  • php企业网站源码软件工程师发展前景
  • 如何从建设局网站上更换职称人员哪个网站可以免费做国外网站
  • 情侣博客网站模板下载学校网站建设调查报告
  • 平台网站开发是什么意思全屏的网站
  • 素材图库网站源码网站建设及推广培训班
  • 英国电商网站jsp旅游网站开发系统
  • 机关网站建设引导语开发一个企业网站需要多少钱
  • 徐汇网站推广挣钱最快的小游戏
  • 手机网站开发的目的在线免费看影视网站
  • 湖州网站设计wordpress自动删除p标签
  • 昆明几大网站学生网站建设实训总结
  • 丽江手机网站建设建设公司起名大全
  • seo网站分析工具wordpress的安装包
  • 北京网站建设报价表徐州专业做网站
  • 怎样做网站卖网站国内免费开源crm
  • wordpress多语言网站济宁住房和城乡建设厅网站
  • 免费crm网站下载网站建设 繁体
  • 东莞企业官方网站建设网站建设对产品推销作用大吗
  • php网站路径问题站长工具权重查询
  • 箱包官方网站模板摄影后期教程网站
  • iis 手机网站同域名网站改版需要把之前网站里的文章都拷贝过来吗?
  • 网站是专门对生活中的一些所谓常识做辟谣的商标设计网站排行
  • seo网站设计营销工具抽奖网站插件
  • 家装设计网站大全网站建设用哪个好
  • 青海企业网站建设企业建设网
  • 电子商务网站环境建设怎么劝客户做网站
  • 山西教育学会的网站建设网站投放广告教程
  • 游戏网站的设计方案做装修业务呢有多少网站
  • 口碑好网站建设公司电话百度联盟网站备案信息
  • 网站建设排行公司建筑网页设计详情