赞
踩
- clear all;close;clc
- %% 读取数据
- %p为输入 t为输出
- p=randi(20,[200,2]);%产生大小为1至20之间 维度为200*2的伪随机数矩阵
- t=p(:,1)+p(:,2);
-
- %% 训练集和测试集
- p_train=p(1:190,:)';
- p_test=p(191:end,:)';
- t_train=t(1:190,:)';
- t_test=t(191:end,:)';
-
- %% 节点个数
- inum=2;%输入层
- hnum=5;%隐藏层
- onum=1;%输出层
-
- %% 训练集输入输出数据归一化
- [P_train,PS]=mapminmax(p_train);%首字母大写:归一化后的数据
- [T_train,TS]=mapminmax(t_train);
-
- %% 构建BPnet框架 参数配置
- net=newff(P_train,T_train,hnum);
- view(net)
- net.trainParam.epochs=1000;%迭代次数
- net.trainParam.lr=0.01;%学习率
- net.trainParam.goal=0.00001;%最小目标误差(均方误差)
-
- %% BPnet训练
- net=train(net,P_train,T_train);%根据上述参数对net进行训练
-
- %% 测试集输入数据归一化
- P_test=mapminmax('apply',p_test,PS);
-
- %% BPnet预测
- T_test_predict=sim(net,P_test);
-
- %% 预测值反归一化
- t_test_predict=mapminmax('reverse',T_test_predict,TS);
-
- %% 误差:真实值-预测值
- error=t_test-t_test_predict;
- mse=error*error'/size(error,2);%均方误差
-
- %% 对比图
- hold on
- plot(t_test,'bo-');
- plot(t_test_predict,'r*-');
- plot(error,'k');
- legend('真实值','预测值','误差');
- xlabel('数据组数');
- ylabel('样本值');
- title('BPnet预测值与真实值的对比图');
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。