归一化处理我理解,但是很多例子的反归一化我就不是很明白 。如下面这个例子:

%准备好训练集

%人数(单位:万人)

numberOfPeople=[20.55 22.44 25.37 27.13 29.45 30.10 30.96 34.06 36.42 38.09 39.13 39.99 41.93 44.59 47.30 52.89 55.73 56.76 59.17 60.63];

%机动车数(单位:万辆)

numberOfAutomobile=[0.6 0.75 0.85 0.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6 2.7 2.85 2.95 3.1];

%公路面积(单位:万平方公里)

roadArea=[0.09 0.11 0.11 0.14 0.20 0.23 0.23 0.32 0.32 0.34 0.36 0.36 0.38 0.49 0.56 0.59 0.59 0.67 0.69 0.79];

%公路客运量(单位:万人)

passengerVolume = [5126 6217 7730 9145 10460 11387 12353 15750 18304 19836 21024 19490 20433 22598 25107 33442 36836 40548 42927 43462];

%公路货运量(单位:万吨)

freightVolume = [1237 1379 1385 1399 1663 1714 1834 4322 8132 8936 11099 11203 10524 11115 13320 16762 18673 20724 20803 21804];

%输入数据矩阵

p = [numberOfPeople; numberOfAutomobile; roadArea];

%目标(输出)数据矩阵

t = [passengerVolume; freightVolume];

%对训练集中的输入数据矩阵和目标数据矩阵进行归一化处理

[pn, inputStr] = mapminmax(p);

[tn, outputStr] = mapminmax(t);

%建立BP神经网络

net = newff(pn, tn, [3 7 2], {'purelin', 'logsig', 'purelin'});

%每10轮回显示一次结果

net.trainParam.show = 10;

%最大训练次数

net.trainParam.epochs = 5000;

%网络的学习速率

net.trainParam.lr = 0.05;

%训练网络所要达到的目标误差

net.trainParam.goal = 0.65 * 10^(-3);

%网络误差如果连续6次迭代都没变化,则matlab会默认终止训练。为了让程序继续运行,用以下命令取消这条设置

net.divideFcn = '';

%开始训练网络

net = train(net, pn, tn);

%使用训练好的网络,基于训练集的数据对BP网络进行仿真得到网络输出结果

%(因为输入样本(训练集)容量较少,否则一般必须用新鲜数据进行仿真测试)

answer = sim(net, pn);

%反归一化

answer1 = mapminmax('reverse', answer, outputStr);

%绘制测试样本神经网络输出和实际样本输出的对比图(figure(1))-------------------------------------------

t = 1990:2009;

%测试样本网络输出客运量

a1 = answer1(1,:);

%测试样本网络输出货运量

a2 = answer1(2,:);

figure(1);

subplot(2, 1, 1); plot(t, a1, 'ro', t, passengerVolume, 'b+');

legend('网络输出客运量', '实际客运量');

xlabel('年份'); ylabel('客运量/万人');

title('神经网络客运量学习与测试对比图');

grid on;

subplot(2, 1, 2); plot(t, a2, 'ro', t, freightVolume, 'b+');

legend('网络输出货运量', '实际货运量');

xlabel('年份'); ylabel('货运量/万吨');

title('神经网络货运量学习与测试对比图');

grid on;

%使用训练好的神经网络对新输入数据进行预测

%新输入数据(2010年和2011年的相关数据)

newInput = [73.39 75.55; 3.9635 4.0975; 0.9880 1.0268];

%利用原始输入数据(训练集的输入数据)的归一化参数对新输入数据进行归一化

newInput = mapminmax('apply', newInput, inputStr);

%进行仿真

newOutput = sim(net, newInput);

%反归一化

newOutput = mapminmax('reverse',newOutput, outputStr);

disp('预测2010和2011年的公路客运量分别为(单位:万人):');

newOutput(1,:)

disp('预测2010和2011年的公路货运量分别为(单位:万吨):');

newOutput(2,:)

%在figure(1)的基础上绘制2010和2011年的预测情况-------------------------------------------------------

figure(2);

t1 = 1990:2011;

subplot(2, 1, 1); plot(t1, [a1 newOutput(1,:)], 'ro', t, passengerVolume, 'b+');

legend('网络输出客运量', '实际客运量');

xlabel('年份'); ylabel('客运量/万人');

title('神经网络客运量学习与测试对比图(添加了预测数据)');

grid on;

subplot(2, 1, 2); plot(t1, [a2 newOutput(2,:)], 'ro', t, freightVolume, 'b+');

legend('网络输出货运量', '实际货运量');

xlabel('年份'); ylabel('货运量/万吨');

title('神经网络货运量学习与测试对比图(添加了预测数据)');

grid on;

预测的时候反归一化为啥呀

matlab卷积完为什么要归一化,为什么要进行反归一化处理,而且反归一化什么意思?...相关推荐

  1. 【GRU时序预测】基于matlab卷积神经网络结合门控循环单元CNN-GRU时间序列预测【含Matlab源码 2287期】

    ⛄一.CNN-GRU数据预测 1 理论基础 1.1 CNN算法 负荷序列数据为一维数据,用一维卷积核对数据进行卷积处理,以获取数据的特征. 现设定卷积核的维度为3,移动步长为1,对输入数据进行卷积,以 ...

  2. 【数字信号处理】卷积编程实现 ( Matlab 卷积和多项式乘法 conv 函数 | 使用 matlab 代码求卷积并绘图 )

    文章目录 一.Matlab 卷积和多项式乘法 conv 函数 二.使用 matlab 代码求卷积并绘图 一.Matlab 卷积和多项式乘法 conv 函数 Matlab 文档地址 : https:// ...

  3. 卷积在计算机中实现+pool作用+数据预处理目的+特征归一化+理解BN+感受野理解与计算+梯度回传+NMS/soft NMS

    一.卷积在计算机中实现 1.卷积 将其存入内存当中再操作(按照"行先序"): 这样就造成混乱. 故需要im2col操作,将特征图转换成庞大的矩阵来进行卷积计算,利用矩阵加速来实现, ...

  4. matlab卷积相关

    matlab卷积计算时,一般有conv2,filter2等函数,先构造两个矩阵, A = randn(4); h = rand(3); 各个函数的用法如下: filter C = conv2(b , ...

  5. Matlab卷积神经网络(CNN)手写数字识别(一)

    今天买的书到了,开始接触卷积神经网络,展示书中内容~ Matlab卷积神经网络手写数字识别(一) 机器学习的基本流程 加载Matlab自带数据集 机器学习的基本流程 在机器学习中,一般将数据集划分为两 ...

  6. 卷积神经网络代码 Matlab,卷积神经网络matlab程序

    cnn卷积神经网络用什么语言来写pascial . 200+这个是hintonmatlab代码的C++改写版.convnetjs-Star,SAE,首选的肯定是LIBSVM这个库;RBM#47.Dee ...

  7. 归一化处理公式_数学建模中的数据处理——归一化处理

    关于数据处理,很常见的一个方法就是"去量纲处理",在大家数据处理中经常使用到数据的标准化处理,后边的主成分分析法,因子分析,聚类分析等,都会使用到数据归一化处理.,在此分享一下关于 ...

  8. python归一化sklearn_用sklearn进行对数据标准化、归一化以及将数据还原详解

    如何用sklearn进行对数据标准化.归一化以及将数据还原 在对模型训练时,为了让模型尽快收敛,一件常做的事情就是对数据进行预处理. 这里通过使用sklearn.preprocess模块进行处理. 一 ...

  9. 处理数据时不进行归一化会有什么影响?归一化的作用是什么?什么时候需要归一化?有哪些归一化的方法?

    归一化化定义:我是这样认为的,归一化化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内.首先归一化是为了后面数据处理的方便,其次是保正程序运行时收敛加快. 所谓特征归一化,就 ...

最新文章

  1. 冲量(momentum)的原理与Python实现
  2. CentOS7Jenkins安装
  3. python enumerate()
  4. 如何实现两列等高效果?
  5. 设计师网站导航的好处
  6. 自定义注解完成数据库切库
  7. jave se基础复习2
  8. Unity3D之NGUI基础2:使用NGUI
  9. AngularJS学习之旅—AngularJS 事件(十四)
  10. autocad.net QQ群:193522571 判断string中是否包含集合中所有的字符串
  11. 硬件设计论坛_从全球EDA产业发展看EDA365电子论坛作用
  12. ESP-Drone控制板设计的第二个任务-绘制USB-TTL串口下载电路和ESP32-S2芯片内置USB接口电路
  13. 搜索引擎基本工作原理
  14. 安卓小项目之刀刀人脸识别系统
  15. STM32 W5500以太网通讯
  16. Android自学之路,DrawerLayout must be measured with MeasureSpec.EXACTLY.错误
  17. 真正想做的人,什么都不说
  18. 开源多端合一小程序源码系统+前端+后端+搭建教程
  19. 直接计算法弱磁控制策略 额定转速以下采用最大转矩电流比控制
  20. error C2440: “=”: 无法从“const _Elem *”转换为“char *”

热门文章

  1. 排行榜上用C++写局域网聊天程序
  2. 飞鸽传书:摆一摆自己的C++程序设计入行历程
  3. 飞鸽传书2007用户需求就是做好需求处理
  4. C/C++中的近指令、远指针和巨指针
  5. C/C++只做经典编程语言
  6. 女程序员,说多了都是泪!
  7. 整合基因组学和蛋白质结构的致病机制分析
  8. Ubuntu的简单远程控制和远程桌面
  9. littlevgl 透明按钮_张家港3-10吨叉车日租价格透明2020
  10. CAN收发器SN65HVD230,实际应用案例分析