动态神经网络时间序列预测

      大家好,我是带我去滑雪!

     神经网络投照是否存在反锁与记忆可以分为静态神经网络与动态神经网络。动态神经网络是指神经网络带有反做与记忆功能,无论是局部反馈还是全局反锁。通过反馈与记忆,神经网络能将前一时刻的数据保留,使其加人到下一时刻数据的计算,使网络不仅具有动态性而且保留的系统信息也更加完整。动态神经网络有许多应用,例如,金融分析师用于分析某只股票、基金或者其他金融工具未来某时点的价格,工程师用于预测最近一次可能的飞机引擎故障时间等,可见动态神经网络在分析、仿真、系统监测与控制等领域有重要应用。根据动态神经网络实现系统动态的方法不同,将之分为两类:一类是回归神经网络,它是由静态神经元和网络输出反馈构成的动态网络,典型的有 NARX 回归神经网络;另一类是通过神经元反馈形成,的神经网络,如全回归神经网络、Elman 神经网络、PID神经网络等等。本期将动态网络应用于时间序列的预测中,实现通过 NARX 动态神经网络对时问序列数据的建模仿真及效果评价。

目录

一、问题描述与模型建立

(1)问题描述

(2)模型建立

二、代码实现与结果分析

(1)建立非线性自回归模型

(2)数据准备工作

(3)训练函数、误差函数、绘图函数确定

(3)NARX神经网络模型

(5)结果分析


一、问题描述与模型建立

(1)问题描述

      中和反应是化学反应中复分解反应的一种,是指酸和破互相交换组分、生成盐和水的反应,在中和的过程中,酸里的氢离子和碱中的氢氧根离子会结合成水。中和反应发生后最终产物的PH 值不一定是7。如果一强酸与强破参与中和反应,其产物的PH则会是7。如强酸盐酸和强碱氢氧化钠发生中和反应,产生氣化钠和水。本案例使用 MATLAB 自带案例数据,即给定两个酸碱溶液的流速来预测和反应过程后溶液的PH值。

(2)模型建立

       数据使用两个含有2001 个监测点的时间序列数据。其中 PhInputs 为一个1×2001维的cell,代表了2001 个监测时间点酸碱溶液的流速。PhTargets 为 1×2001 维的cell,代表中和反应后溶液的pH 值。本研究的目的就是通过当前的酸碱溶液流速预测中和反应后溶液的pH 值大小。

二、代码实现与结果分析

(1)建立非线性自回归模型

load phdata
inputSeries = phInputs;
targetSeries = phTargets;

%% 建立非线性自回归模型
inputDelays = 1:2;
feedbackDelays = 1:2;
hiddenLayerSize = 10;
net = narxnet(inputDelays,feedbackDelays,hiddenLayerSize);

(2)数据准备工作

net.inputs{1}.processFcns = {'removeconstantrows','mapminmax'};
net.inputs{2}.processFcns = {'removeconstantrows','mapminmax'};

%% 时间序列数据准备工作
[inputs,inputStates,layerStates,targets] = preparets(net,inputSeries,{},targetSeries);

%% 训练数据、验证数据、测试数据划分
net.divideFcn = 'dividerand';  
net.divideMode = 'value';  
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;

(3)训练函数、误差函数、绘图函数确定

net.trainFcn = 'trainlm';  % Levenberg-Marquardt

net.performFcn = 'mse';  % Mean squared error

net.plotFcns = {'plotperform','plottrainstate','plotresponse', ...
  'ploterrcorr', 'plotinerrcorr'};

[net,tr] = train(net,inputs,targets,inputStates,layerStates);

outputs = net(inputs,inputStates,layerStates);
errors = gsubtract(targets,outputs);
performance = perform(net,targets,outputs)

trainTargets = gmultiply(targets,tr.trainMask);
valTargets = gmultiply(targets,tr.valMask);
testTargets = gmultiply(targets,tr.testMask);
trainPerformance = perform(net,trainTargets,outputs)
valPerformance = perform(net,valTargets,outputs)
testPerformance = perform(net,testTargets,outputs)

figure, plotperform(tr)
figure, plottrainstate(tr)
figure, plotregression(targets,outputs)
figure, plotresponse(targets,outputs)
figure, ploterrcorr(errors)
figure, plotinerrcorr(inputs,errors)

(3)NARX神经网络模型

narx_net_closed = closeloop(net);
view(net)
view(narx_net_closed)
phInputs_c=phInputs(1500:2000);
PhTargets_c=phTargets(1500:2000);

[p1,Pi1,Ai1,t1] = preparets(narx_net_closed,phInputs_c,{},PhTargets_c);
yp1 = narx_net_closed(p1,Pi1,Ai1);
plot([cell2mat(yp1)' cell2mat(t1)'])

(5)结果分析


更多优质内容持续发布中,请移步主页查看。

若有问题可邮箱联系:1736732074@qq.com 

博主的WeChat:TCB1736732074

   点赞+关注,下次不迷路!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/174257.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言经典好题:字符串左旋(详解)

这题还是比较简单的&#xff0c;各位看完有收获吗 #include<stdio.h> #include<string.h> void leftturn(char arr[],int k) {int len strlen(arr);for (int i 0;i <k;i)//左旋k个字符{//创建临时变量char tmp 0;tmp arr[0];//将数组第一个字符存储到临时变…

函数模板(成长版)

与普通函数区别&#xff1a;1.多了个template<class T>;2.某些确定类型变不确定类型T 一&#xff1a;引子&#xff1a; #include<iostream> using namespace std; template<typename T> T Max(T a, T b) {return a > b ? a : b; } int main() {int x, …

计算机毕业设计选题推荐-网上产品商城-Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

云原生Docker系列 | Docker私有镜像仓库公有镜像仓库使用

云原生Docker系列 | Docker私有镜像仓库&公有镜像仓库使用 1. 使用公有云镜像仓库1.1. 阿里云镜像仓库1.2. 华为云镜像仓库1.3. 腾讯云镜像仓库2. 使用Docker Hub镜像仓库3. 使用Harbor构建私有镜像仓库4. 搭建本地Registry镜像仓库1. 使用公有云镜像仓库 1.1. 阿里云镜像…

七、HDFS文件系统的存储原理

1、总结 之所以把总结放在文件开头&#xff0c;是为了让读者对这篇文章有更好的理解&#xff0c;&#xff08;其实是因为我比较懒……&#xff09; 对于整个HDFS文件系统的存储原理&#xff0c;我们可以总结为一句话&#xff0c;那就是&#xff1a; 分块备份 2、存储结构和问题…

O-Star|再相识

暑去秋来&#xff0c;岁月如梭&#xff0c;几名"O-Star"们已经入职一段时间&#xff0c;在这期间他们褪去青涩&#xff0c;逐渐适应了公司的工作环境和文化&#xff0c;迈向沉稳&#xff5e; 为了进一步加深校招生之间的交流与了解&#xff0c;提高校招生的凝聚力和…

易航网址引导系统 v1.9 源码:去除弹窗功能的易航网址引导页管理系统

易航自主开发了一款极其优雅的易航网址引导页管理系统&#xff0c;后台采用全新的光年 v5 模板开发。该系统完全开源&#xff0c;摒弃了后门风险&#xff0c;可以管理无数个引导页主题。数据管理采用易航原创的JsonDb数据包&#xff0c;无需复杂的安装解压过程即可使用。目前系…

第4章 向量、SIMD和GPU体系结构中的数据级并行

4.1 引言 有多少应用程序拥有大量的数据级并行DLP&#xff1f;SIMD分类Flyn被提出后5年。答案不仅包括科学运算中的矩阵运算&#xff0c;还包括面向多媒体的图像和声音处理以及机器学习算法。 由于SIMD可以执行多个数据操作&#xff0c;能效比MIMD要高&#xff0c;使得SIMD对…

小红书全自动加群引流脚本「 软件工具+引流技术教程」

软件介绍&#xff1a; 小红书群聊最新玩法&#xff0c;可自动检测群人数加群&#xff0c;不会加到垃圾群。定时发送广告&#xff0c;红书群聊的引流玩法回来了 功能一、自动搜索关键词加群&#xff0c;比如创业、项目、鞋子、包包、考公、考研… 功能二、自动检测群人数&…

电子学会C/C++编程等级考试2022年09月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:指定顺序输出 依次输入3个整数a、b、c,将他们以c、a、b的顺序输出。 时间限制:1000 内存限制:65536输入 一行3个整数a、b、c,以空格分隔。 0 < a,b,c < 108输出 一行3个整数c、a、b,整数之间以一个空格分隔。样例输入…

03-基于Feign的远程调用,详解Feign的自定义配置和优化,创建Feign模块

Feign远程调用 Feign替代RestTemplate 利用RestTemplate发起远程调用的代码的缺点 代码可读性差编程体验不统一 , 面对参数复杂的URL难以维护 String url "http://user-service/user/" order.getUserId(); User user restTemplate.getForObject(url, User.cla…

【Proteus仿真】【Arduino单片机】多功能数字时钟设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、DS1302温度传感器、DS1302时钟、按键、蜂鸣器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示当前日期…

【DevOps】Git 图文详解(六):Git 利器 - 分支

Git 利器 - 分支 1.分支 Branch2.分支指令 &#x1f525;3.分支的切换 checkout4.合并 merge & 冲突4.1 &#x1f538; 快速合并&#xff08;Fast forward&#xff09;4.2 &#x1f538; 普通合并4.3 处理冲突 <<<<<<< HEAD 5.变基 rebase 分支是从主…

【C++进阶之路】第十一篇:C++的IO流

文章目录 1. C语言的输入与输出2. 流是什么3. CIO流3.1 C标准IO流3.2 C文件IO流 4.stringstream的简单介绍 1. C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据&#xff0c;并将值存放在变量中。prin…

【鸿蒙应用ArkTS开发系列】- 灌水区,鸿蒙ArkTs开发有问题可以在该帖中反馈

大家好, 这是一篇水贴&#xff0c;给大家提供一个交流沟通鸿蒙开发遇到问题的地方。 新增新增这个文章呢&#xff0c;大家在开发使用ArkTS开发鸿蒙应用或者鸿蒙服务的时候&#xff0c;有遇到疑问或者问题&#xff0c;可以在本文章评论区提问&#xff0c;我看到了如果知道怎么…

【内网穿透】在Ubuntu搭建Web小游戏网站,并将其发布到公网访问

目录 前言 1. 本地环境服务搭建 2. 局域网测试访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4. 配置固定二级子域名 4.1 保留一个二级子域名 4.2 配置二级子域名 4.3 测试访问公网固定二级子域名 前言 网&#xff1a;我们通常说的是互…

Ubuntu文件系统损坏:The root filesystem on /dev/sda5 requires a manual fsck

前言 Ubuntu在启动过程中&#xff0c;经常会遇到一些开故障&#xff0c;导致设备无法正常开机&#xff0c;例如文件系统损坏等。 故障描述 Ubuntu系统启动过程中&#xff0c;出现以下文件系统损坏错误&#xff1a; 产生原因 该故障是由磁盘检测不能通过导致&#xff0c;可能是因…

竞赛 题目:基于深度学习的手势识别实现

文章目录 1 前言2 项目背景3 任务描述4 环境搭配5 项目实现5.1 准备数据5.2 构建网络5.3 开始训练5.4 模型评估 6 识别效果7 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的手势识别实现 该项目较为新颖&#xff0c;适合作为竞赛课题…

基于C#实现AC自动机算法

我要检查一篇文章中是否有某些敏感词&#xff0c;这其实就是多模式匹配的问题。当然你也可以用 KMP 算法求出&#xff0c;那么它的时间复杂度为 O(c*(mn))&#xff0c;c&#xff1a;为模式串的个数。m&#xff1a;为模式串的长度,n:为正文的长度&#xff0c;那么这个复杂度就不…

Macs Fan Control Pro:掌握您的Mac风扇,提升散热效率

在Mac的世界里&#xff0c;每一个细节都显得格外重要。而其中&#xff0c;风扇的控制与调节则显得尤为重要。然而&#xff0c;原生的Mac系统并不提供直观的风扇控制工具&#xff0c;这使得许多Mac用户在处理高负荷任务时&#xff0c;风扇无法有效地进行散热&#xff0c;导致机器…