matlab动态神经网络进行时间序列预测分析

2023-11-18

matlab动态神经网络进行时间序列预测分析

时间序列预测问题分类

  • 有y,无x,即 y(t)=f(y(t1),y(t2),...) y ( t ) = f ( y ( t − 1 ) , y ( t − 2 ) , . . . ) (NAR)
  • 有x,有y,即 y(t)=f(x(t1),x(t2),...,y(t1),y(t2),...) y ( t ) = f ( x ( t − 1 ) , x ( t − 2 ) , . . . , y ( t − 1 ) , y ( t − 2 ) , . . . ) (NARX)
  • 有x,无y,即 y(t)=f(x(t1),x(t2),... y ( t ) = f ( x ( t − 1 ) , x ( t − 2 ) , . . . (比较少见)

matlab中的动态神经网络

  • matlab中有narnet、narxnet等函数可以用于时间序列的预测分析,下面主要对narnet尽心说明
  • narnet需要设置当前值依赖过去值的个数k,即依赖多少个过去的值,同时还需要设置隐含层节点的个数,搭建之后就可以进行构建模型了
  • 预测的时候,需要首先给出预测初始时刻的前k个值,因为当前值是由前k个值决定的,将此作为输入,就可以依次给出后面的预测值。

代码

%%
clc,clear,close all
t = -5:.01:5;
pressure = sin(10*t)';
figure
plot( pressure )
%% 训练集与测试集的个数
num_all_data = length( pressure );
% 前75%的数据作为训练数据
num_train = floor( num_all_data * 0.75 );
% 后25%的数据作为测试数据
num_test = num_all_data - num_train;
% 转化为narnet需要的序列数据
y_train_nn = num2cell( pressure(1:num_train) )';
y_test_nn = num2cell( pressure(1+num_train:end))';
%% 延迟,即当前值依赖于过去的多少个值
feedback_delays = 1:10;
% 隐含层节点的个数
num_hd_neuron = 10;
% narnet构建
net = narnet(feedback_delays, num_hd_neuron);
[Xs,Xi,Ai,Ts] = preparets(net,{},{}, y_train_nn);
net = train(net,Xs,Ts,Xi,Ai);
view(net)
Y = net(Xs,Xi);
perf = perform(net,Ts,Y);
fprintf( 'neural network: mse on training set : %.6f\n', perf );
%% 神经网络进行进行预测
yini = y_train_nn(end-max(feedback_delays)+1:end);
[Xs,Xi,Ai] = preparets(net,{},{},[yini y_test_nn]);
y_pred_nn = net(Xs,Xi,Ai)';
y_pred_nn = cell2mat( y_pred_nn );
y_test_nn = cell2mat( y_test_nn )';

%% 画图,计算mse
figure
title('NARNET预测')
hold on
plot( y_test_nn, 'r', 'linewidth', 2 );
plot( y_pred_nn, 'b--', 'linewidth', 2 );
legend({ '真实值', '神经网络预测值'})
nn_per_error = mean(abs(y_pred_nn-y_test_nn) ./ y_test_nn);
nn_mse_error = mean( (y_pred_nn - y_test_nn).^2 );
fprintf('nn model: relative error on test set: %.6f\n', nn_per_error);
fprintf('nn model: mse on test set: %.6f\n', nn_mse_error);

结果

这里写图片描述

这里写图片描述

参考链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab动态神经网络进行时间序列预测分析 的相关文章

  • EJBCA操作说明(二)java操作

    ejbca web界面操作 代码下载地址 初始化获得EJBCA实例 初始化EjbcaWS 获得EJBCA服务端Webservice实例 return public static EjbcaWS init EjbcaWS ejbcaWS nu
  • 单元测试 实体

    单元测试 实体 代码 Before public void setUp userVoTest new UserVo Test public void testEquals final boolean result userVoTest eq
  • C语言编译遇到的错误提示总结

    C语言编译遇到的错误提示总结 error1 expected asm or attribute before token error1 expected asm or attribute before token 解决方案 很有可能是你定义
  • Java常见面试题

    1 进程和线程的区别 1 进程是内存中运行的程序 是操作系统资源分配的基本单元 在windows操作系统中运行的每一个exe文件就是一个进程 每个进程都有独立的代码和数据空间 程序上下文 所以程序之间切换开销比较大 2 线程是处理器任务调度

随机推荐

  • stm32f407 bootloader程序制作 bootloader(基于rtthread3.3.0 sfud easyflash等库) 升级APP(基于rtthread的app)

    本位将介绍stm32f407vgt6 芯片制作bootloader程序 用作app的远程升级 一 硬件介绍 stm32f407vgt6 主频 166MHZ flash 1M SRAM 192K stm32f407vgt6 使用的phy芯片为
  • 微信小程序顶部栏图片随页面滚动渐变展示隐藏

    微信小程序顶部栏图片随页面滚动渐变展示隐藏 小程序顶部通栏 展示图片 随着页面滚动 开始渐变展标题记及纯色吸顶样式 主要使用了小程序中的scroll view组件 通过滚动时触发 bindscroll和滚动到顶部 bindscrolltou
  • LeetCode 67. 二进制求和

    题目链接 https leetcode cn problems add binary 思路如下 高精度加法 从低位到高位逐个对应相加 C 代码如下 class Solution public string addBinary string
  • 登录安全

    1 前端将用户名和密码rsa加密 后端解密 2 为防止登录数据被拦截而被复制登录 登录数据添加当前时间戳或加密后唯一字段 后端每一次登录成功后将时间戳或唯一字段加工后作为一个redis键名保存 值随便 缓存时间和登录有效时间一致 以保证登录
  • 【NLP】大模型综述来了!一文带你理清全球AI巨头的大模型进化史

    夕小瑶科技说 原创 作者 小戏 Python 如果自己是一个大模型的小白 第一眼看到 GPT PaLm LLaMA 这些单词的怪异组合会作何感想 假如再往深里入门 又看到 BERT BART RoBERTa ELMo 这些奇奇怪怪的词一个接
  • 三局两胜制下获得首胜后最后获胜的概率

    之前看NBA的时候 说拿下天王山之战的战队有83 3 差不多这个值 的概率拿下最后的胜利 当时感觉很奇怪 为什么这么接近5 6而不是3 4呢 然后自己算了一下 还真是 先说下为什么不是3 4的原因 3 4很容易算出来 1 2 1 2 可是后
  • 如何利用阿里云服务器快照策略为数据备份

    阿里云服务器快照 是一个很好的备份容灾工具 不了解的可以先了解一下 快照可以做什么 这是一种便捷高效的数据保护服务手段 可以对重要业务数据进行备份 来应对误操作 攻击 病毒等导致的数据丢失风险 比如前段时间的勒索病毒事件 假设你中招后所有数
  • Django下载图片接口

    import logging from django http import HttpResponse FileResponse from io import BytesIO from urllib parse import quote c
  • 还是得从代码角度看yolov5(1)

    train 参考文章 又是经典写到一半发现别人写的更好 基础函数 1 setattr setattr opt k v 将给定对象上的命名属性设置为指定值 等价于opt k v 2 getattr callback getattr logge
  • Pandas的学习(3.DataFrame的创建方法和三种索引方法(iloc、loc、values)以及切片)

    DataFrame DataFrame是一个 表格型 的数据结构 可以看做是 由Series组成的字典 共用同一个索引 DataFrame由按一定顺序排列的多列数据组成 设计初衷是将Series的使用场景从一维拓展到多维 DataFrame
  • 校验金额正则2--onchange触发校验

    用法 鼠标输入失去焦点的时候出发onchange属性调用js校验正则方法 正则校验reg1 test 不正确返回false 正确返回true 定义mm做判断 缺点 return直接退出了 如果需要重复操作不可取 或者不用return htm
  • PHP XAMPP配置PHP环境和Apache80端口被占用解决方案

    LAMP Linux Apache MySQL PHP 或WAMP Windows Apache MySQL PHP 是一门关于PHP架构网站的课程 它可以使用XAMPP软件 Apache MySQL PHP集成开发包 搭建PHP环境进行网
  • 从Docker到Kubernetes——K8s网络核心原理

    文章目录 Dokcer的网络模型 kubernetes网络核心原理 IP per Pod模型 Kubernetes网络插件flannel Dokcer的网络模型 Dokcer默认使用单主机的网络方案 它默认创建一个名为docker0的网桥
  • DateFormat类

    DateFormat类 DateFormat类用于将日期格式化为字符串或者将用特定格式显示的日期字符串转换成一个Date对象 DateFormat是一个抽象类 不能直接被实例化 提供了一系列静态方法来获取DateFormat类的实例对象 D
  • 一文读懂「Attention is All You Need」

    前言 2017 年中 有两篇类似同时也是笔者非常欣赏的论文 分别是 FaceBook 的Convolutional Sequence to Sequence Learning和 Google 的Attention is All You Ne
  • Android实战——Zxing实现二维码扫描

    Zxing实现二维码扫描 前言 本篇文章从初学者的角度出发 从一个不知道对二维码扫描怎么下手的工作者 需要一个简单的扫描功能的话 可以阅读该篇文章 作为Google开源框架Zxing 里面的文件很大 这里主要讲的是精简ZXing项目后只保留
  • 数据库字典表设计

    数据库字典表设计 村长大神 发表于2年前 在稍大一些的项目中 我们总是需要管理各种各样的类型类型数据 如商品类型 游戏类型 对于这些类型的管理类似 如果为每 一种类型都建立一张表去维护 而在项目中 正常
  • H.264视频码流解析

    原理 H 264原始码流 又称为 裸流 是由一个一个的NALU组成的 他们的结构如下图所示 其中每个NALU之间通过startcode 起始码 进行分隔 起始码分成两种 0x000001 3Byte 或者0x00000001 4Byte 如
  • 在vs2005中,写c程序,所有的局部变量都要放在函数体的最前面

    没有放在最前面的源码 怎么办呢 修改量太大
  • matlab动态神经网络进行时间序列预测分析

    matlab动态神经网络进行时间序列预测分析 时间序列预测问题分类 有y 无x 即 y t f y t 1 y t 2 y t f y t