【MATLAB第43期】基于MATLAB的BO-NAR贝叶斯优化动态神经网络NAR时间序列股票预测模型

NARNAR_0">【MATLAB第43期】基于MATLAB的BO-NAR贝叶斯优化动态神经网络NAR时间序列股票预测模型

一、效果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、模型介绍

1.数据情况

一列数据,499个值

ratio = 0.9;% 训练集比例
MaxEpochs = 600;% 最大训练次数 
% % 导入股票数据
xall= importdata('数据.xlsx');

2.优化参数

**贝叶斯优化7个超参数:

学习率
训练目标函数
动量值
归一方式
滑动窗口值
隐含层1神经元数
隐含层2神经元数**

适应度函数: mae

3.贝叶斯结构参数

贝叶斯参数:

'MaxTime',10*60*60, ...%10*60*60  训练最大时间
'Verbose',1,...
'NumSeedPoints',info(1),...%初始评估点数
'MaxObjectiveEvaluations',100,...%迭代次数
'ExplorationRatio',0.7,...%搜索倾向概率

NAR_52">4.NAR参数:

 net.trainParam.epochs = MaxEpochs ; % 600
        net.trainParam.goal = 1e-6;   %训练目标值
         net.trainParam.max_fail = 30; % 最大失败次数
               net.divideParam.trainRatio = 0.7;训练集划分
        net.divideParam.valRatio = 0.15;:验证集划分
        net.divideParam.testRatio = 0.15;%测试集划分

三、代码展示

clear all
ratio = 0.9;% 训练集比例
MaxEpochs = 600;% 最大训练次数 
NetOption = 'NarNet';% NET网络

% % 导入股票数据
xall= importdata('数据.xlsx');
Date=datetime(xall.textdata)';
data= xall.data';

numStepsTraining = round(ratio*numel(data));
indexTrain = 1:numStepsTraining;
dataTrain = data(indexTrain );
dateTrain = Date(indexTrain);

indexTest = numStepsTraining+1:size(data,2);
dataTest = data(indexTest);
dateTest = Date(indexTest);

 
    optimVars = [
        optimizableVariable('learningrate',[1e-5 1e-2],'Type','real','Transform',"log")
        optimizableVariable('performFcn',{'mse' 'mae' 'sse' 'msesparse'},'Type','categorical')
        optimizableVariable('mc',[5e-1 0.99],'Type','real',"Transform","log")
        optimizableVariable('processFcns',{'mapminmax' 'mapstd'},'Type','categorical')
        optimizableVariable('Lag',[5 20],'Type','integer')
        optimizableVariable('hiddenLayerSize1',[7 25],'Type','integer')
        optimizableVariable('hiddenLayerSize2',[7 25],'Type','integer')];

  
    BayesObject = bayesopt(ObjFcnSN,optimVars, ...
        'MaxTime',10*60*60, ...%10*60*60  训练最大时间
        'Verbose',1,...
        'NumSeedPoints',info(1),...%初始评估点数
        'MaxObjectiveEvaluations',100,...%迭代次数
        'ExplorationRatio',0.7,...%搜索倾向概率
  

    % 得到最佳参数
    optVars = bestPoint(BayesObject),
   

四、代码获取

后台**私信回复“43期”**即可获取下载链接


http://www.niftyadmin.cn/n/476544.html

相关文章

第14章-Python-人工智能-语言识别-调用百度语音识别

百度语音识别API是可以免费试用的,通过百度账号登录到百度智能云,在语音技术页面创建的应用,生成一个语音识别的应用,这个应用会给你一个APIKey和一个Secret Key,如图14.1所示。 我们在自己的程序中用 API Key 和 Secr…

王道考研计算机网络第三章知识点汇总

3.1数据链路层功能概述: 3.2封装成帧和透明传输 重点理解透明传输的概率:可以形象地理解为小秘没有权限打开这5份文件 字符计数法如果其中一个计数字段出差错那么后续字段全部都错误,将会导致灾难性的错误。 字符填充法相当于编程时在/前面再…

计算机组成原理(期末或考研备考)-计算机性能指标(字长,主存容量,吞吐量,主频和时钟周期)

字长:字长是指计算机进行一次整数运算所能处理的二进制数据的位数,通常与CPU寄存器大小相同,因为数据进入到CPU之前会放入寄存器中。 主存大小:通常使用字数字长,例如512K*16位就表示共有512K个存储单元,每…

Self-Instruct 论文解读:利用大模型自己给自己生成指令数据,指令数据自动生成

总览 大规模“指令调整”的语言模型,即指令微调的LLM,已经表现出非凡的零样本能力,尤其是推广新任务上。 然而,这些模型严重依赖于人类编写的指令数据,而这些数据通常在数量、多样性和创造力方面受到限制,…

flutter dart json 转model用法

定义model&#xff1a; class User {final String name;final String email;User(this.name, this.email);User.fromJson(Map<String, dynamic> json): name json[name],email json[email];Map<String, dynamic> toJson() ><String, dynamic>{name: na…

uniapp 详细封装缓存定时过期方法,详细使用过程

最近在开发一个uniapp的项目&#xff0c;中间我们需要给缓存定时&#xff0c;为了解决这个问题&#xff0c;封装了一个方法用来解决这个问题&#xff0c;当时遇到这个问题是因为在项目中要给阿里的OSS上传文件&#xff0c;上传之间先要向服务端请求获取授权&#xff0c;授权我们…

酷开系统 |酷开科技持续创造大屏生命力

在这个信息爆炸的时代&#xff0c;人们对于互联网和智能生活的需求&#xff0c;不再局限于碎片化或工作场景&#xff0c;更多的是延伸至连续化的家庭化使用环境。而智能大屏作为互联网时代下的产物&#xff0c;融合了互联网流媒体的数据处理方式&#xff0c;深受年轻人的青睐&a…

MySQL---每日刷题笔记

23-6-27 1、MySQL中不能使用 NULL 或 ! NULL 等比较运算符在列中查找 NULL 值&#xff0c;因为NULL不可以进行运算 用IS NULL 或 IS NOT NULL才会进行NULL值或非NULL值得查找。 2、聚合函数不能用在WHERE子句后面&#xff0c;WHERE子句无法与聚合函数一起使用 查询的执行顺序…