曲线拟合常用到polyfit(多项式拟合函数)、lsqcurvefit(非线性拟合函数)、BP神经网络 
其中lsqcurvefit需要特定的函数表达式而BP神经网络不要 
曲线拟合有个好用的软件 1stopt

1.简单实例

根据已知工资数值来预测工资走向

P=[566 632 745 755 769 789 985 1110 1313 
1428 1782 1920 2150 2292 2601 3149 4338 
5145 5809 6241 6854 7656 8772 10007 
11374 12567 14332 16614 19228 22844 
26404 29688 32074];%样本数据 
%用于生成训练数据重点内容 
n=0; 
for i=1:30 
for j=(n+1):(n+3) 
a(i,j-n)=P(j);% 566 632 745 
% 632 745 755 
% 745 755 769 a是用于训练的数据(样本集) 
end 
n=n+1; 
end

t(1,:)=P(4:33);%目标集 
p=a’;%样本集 
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);%归一化函数 
net=newff([-1 1;-1 1;-1 1],[5,1],{‘tansig’,’purelin’},’traingd’);%初始化神经网络 
net.trainParam.Lr=0.01;%训练速度 
net.trainParam.epochs=50000;%训练时间 
net.trainParam.goal=0.001;%训练精度 
net=train(net,pn,tn);%训练函数 NET,P,T,[Pi],[Ai] 
%利用原始数据对BP网络仿真 
an=sim(net,pn);%调用Simulink模型 
a=postmnmx(an,mint,maxt);%反归一化 
%数据对比 
x=1981:2010; 
new=a;%将训练完的数据赋给a 
figure(2);%画图窗口 
plot(x,new,’r-o’,x,t,’b–+’);%画图 
legend(‘网络输出平均工资’,’实际输出平均工资’);%对两条曲线的标识(通常在右上角) 
xlabel(‘年份’); 
ylabel(‘平均工资/元’); 
title(‘数据对比图’); 
%评价指标mse 
%e=t-an 
%perf=mse(e) 
%预测,分五次预测,这是第一年的,以此类推就可以了 
pnew=[26404 29688 32074]’; 
[pnewn,minpnew,maxnew]=premnmx(pnew); 
anewn=sim(net,pnewn); 
anew=postmnmx(anewn,mint,maxt); 
anew

2.BP神经网络

1.流程 
输入变量 输入目标值 
归一化处理 
创建神经网络 
训练 
调用sim 
反归一化 -》输出拟合曲线 
输入相应的值进行预测 
2.特点与优点:神经网络就是用向量乘法并广泛采用符号函数及各种逼近。并行、容错、可以硬件实现和自我学习特性。都是它的一般优点和特点。 
3.BP(BackProgation)神经网络按误差逆传播算法训练的多层前馈网络,能学习和存储大量的输入-输出模式映射关系。 
 
4.传递函数 
有两个,logsig(n)和tansig(n) 
两个函数图像是否对应着 归一化【0,1】和归一化【-1,1】?? 
5.BP神经网络中 
权值和阈值都是自动调整的不用预先设定。 
6.newff函数 
net=newff(PR,[S1,S2,…,Sn],{TF1,TF2,…,TFn},BTF,BLF,PF) 
PR:输入向量的最小值和最大值 
Si:第i层神经元个数 
TFi:第i层传递函数 
BTF:训练函数 
BLF:权值/阈值学习函数 
PF:性能函数

3.传入多参数来预测(有问题)

P=[ 
874 2 406; 
900 2 398 ; 
1165 3 480 ; 
1087 2 404 ; 
463 2 363 ; 
815 3 447 ; 
360 2 432 ; 
277 2 504 ; 
626 2 528 ; 
645 2 520 ; 
726 3 517 ; 
394 3 437 ; 
617 3 347 ; 
524 3 505 ; 
489 3 687 ; 
577 3 495 ; 
598 3 566 ; 
475 2 466 ; 
340 2 596 ; 
421 2 547 ; 
];%样本数据 
%用于生成训练数据 
n=0; 
for i=1:16 
for j=(n+1):(n+4) 
a(i,j-n)=P(j,1); 
end 
n=n+1; 
end 
t=P(5:20,1)’;%目标集,有转置!! 
p=a(1:16,:)’;%样本集,此处应该用a,也有转置!! 
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); 
%归一化函数之前的转置和这里的归一化应该有点儿问题 
net=newff([-1 1;-1 1;-1 1;-1 1],[5,1],{‘tansig’,’purelin’},’trainlm’);%初始化神经网络 
net.trainParam.Lr=0.01;%训练速度 
net.trainParam.epochs=500;%训练时间 
net.trainParam.goal=0.001;%训练精度重点内容 
net=train(net,pn,tn);%训练函数 NET,P,T,[Pi],[Ai] 
%利用原始数据对BP网络仿真 
an=sim(net,pn);%调用Simulink模型 
a=postmnmx(an,mint,maxt);%反归一化 
%数据对比 
x=1:16; 
new=a;%将训练完的数据赋给new 
figure(2);%画图窗口 
plot(x,new,’r-o’,x,t,’b–+’);%画图 
legend(‘病毒感染预测输出’,’病毒感染实际输出’);%对两条曲线的标识(通常在右上角) 
xlabel(‘月份’); 
ylabel(‘感染数(万)’); 
title(‘病毒感染预测数据对比图’); 
%评价指标mse 
%e=t-an 
%perf=mse(e) 
%预测 
% pnew=[22844 26404 29688]’; 
% [pnewn,minpnew,maxnew]=premnmx(pnew); 
% anewn=sim(net,pnewn); 
% anew=postmnmx(anewn,mint,maxt); 
% anew 
%连续预测算法 
pnew=[ 
598 3 566 ; 
475 2 466 ; 
340 2 596 ; 
421 2 547 ; 
];%最后4个月病毒感染输出矩阵 不转置? 
j=21; 
tt=[360 550 466 414];%真实数据用来检验误差 
for i=1:4 %这里可以改预测次数1:n年 
pnewn=tramnmx(pnew,minp,maxp);%归一化 
anewn=sim(net,pnewn);%网络模型仿真 
anew=postmnmx(anewn,mint,maxt);%反归一化 
fprintf(‘第%d月病毒感染预测值为:%g\n’,j,anew(:,1));%预测值输出 
number = abs((anew(:,1)-tt(i))/tt(i))*100;%计算误差,获得误差的绝对值 
number = strcat(num2str(number),’%’);%转换为百分比 
fprintf(‘第%d月误差为:%s\n’,j,number);%误差输出 
j=j+1; 
%i=i+1; 
%输入矩阵更新 
pnew(1:3,1)=pnew(1:3,2); 
pnew(1:3,2)=pnew(1:3,3); 
pnew(1:3,3)=pnew(1:3,4); 
pnew(1:3,4)=anew; 
end 
%真实数据 
% 360 550 466 414 
end 
存在的问题:与一个输入参数比较,主要预测时出的结果有问题。会出现4个。 
一个变量时,anew 1,anewn 1,pnew 4,pewne 4 
三个变量时,anew 4,anewn 4,pnew 3x4,pewne 3x4

深度学习-BP曲线拟合(预测)相关推荐

  1. 深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战 卷积神经网络,听起来像是计算机科学.生物学和数学的诡异组合,但它们已经成为计算机视觉领域中最具影响力 ...

  2. 深度学习多变量时间序列预测:LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:LSTM算法构建时间序列多变量模型预测交通流量+代码实战 LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网 ...

  3. 深度学习多变量时间序列预测:Bi-LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:Bi-LSTM算法构建时间序列多变量模型预测交通流量+代码实战 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见 ...

  4. 深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战 LSTM是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要 ...

  5. 深度学习多变量时间序列预测:GRU算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:GRU算法构建时间序列多变量模型预测交通流量+代码实战 GRU是LSTM网络的一种效果很好的变体,它较LSTM网络的结构更加简单,而且效果也很好,因此也是当前非常流形的一种 ...

  6. 如何一夜暴富?深度学习教你预测比特币价格

    如何一夜暴富?深度学习教你预测比特币价格 2018年08月06日 17:50:00 近年来,以比特币为代表的加密数字货币一直是社交媒体和搜索引擎上的热门.但是,比特币价格浮动也使各位看官们经历了过山车 ...

  7. 基于深度学习的视频预测研究综述

    原址:http://html.rhhz.net/tis/html/201707032.htm (收集材料ing,为论文做准备)[综述性文章,,,可以做背景资料] 莫凌飞, 蒋红亮, 李煊鹏 摘要:近年 ...

  8. [深度学习项目] - 时间序列预测 (5)[待补充]

    基于RNN的时序预测 基于LSTM的时序预测: 输入数据时 输入的 y t y_t yt​和 x t + 1 x_{t+1} xt+1​之间存在一个时间差. DeepAR 和 MQRNN 都可以实现时 ...

  9. Keras深度学习实战——信用预测

    Keras深度学习实战--信用预测 0. 前言 1. 任务与模型分析 1.1 数据集 1.2 信用预测任务分析 1.3 神经网络模型分析 2. 使用神经网络实现信用预测 3. 改进模型 3.1 为类别 ...

  10. 基于深度学习的股票预测(完整版,有代码)

    基于深度学习的股票预测 数据获取 数据转换 LSTM模型搭建 训练模型 预测结果 数据获取 采用tushare的数据接口(不知道tushare的筒子们自行百度一下,简而言之其免费提供各类金融数据 , ...

最新文章

  1. chakra linux安装教程,Chakra Linux 安装指南(二):Chakra Linux 安装
  2. 自己开发的Grid组件 针对IOS的
  3. 全面梳理关系型数据库和 NoSQL 的使用情景
  4. springmvc怎么解析post_秋招跳槽,面试是拦路虎?【spring、springMVC】- 常见面试题汇总...
  5. 【渝粤教育】国家开放大学2018年春季 0105-22T酒店营销实务 参考试题
  6. Asp.Net Core 第05局:读取配置
  7. Linux进程 excel族函数的用法
  8. 过度扩容 A股“虚胖”
  9. oracle tns 代理配置_Toad for oracle安装配置与使用
  10. asp.net 2.0 下的表单验证Cookieless属性
  11. JDK源码(9)-Double、Float
  12. 利用jquery实现数字千分位排版显示,使用0动态补全8位数
  13. loadrunner性能测试步骤_性能测试LoadRunner操作流程之一
  14. 计算机中反三角函数怎么算,计算器怎么算反三角函数?
  15. 人脸识别技术大起底,你了解多少?
  16. 使用.net做微信公众号后台
  17. 一口气读完系列最穷的穷光蛋
  18. 《蔡康永的说话之道》思维导图学习笔记
  19. The JSP specification requires that an attribute name is preceded by whitesp
  20. 电脑硬盘坏了怎么修复

热门文章

  1. DAEMON tools lite “至少SPTD ..与 Windows 2000或更高版本” 报错的解决
  2. 新形势下安全风险评估实践
  3. CodeForces 950C Zebras
  4. 一个页面中有多个audio标签,其中一个播放结束后自动播放下一个,audio连续播放
  5. 2022盘点工作室常用的API数据接口开发平台
  6. 不到最后一刻,绝不放弃!
  7. html2canvas 下载图片 报网络错误
  8. JSHOP2与ROS通信
  9. 运用Python 模拟太阳-地球-月亮运动模型
  10. 离散数学——哈斯图,最大最小值,极大极小值,上界和下界