CNN卷积神经网络股票价格预测

部分代码:

%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行
%% 重构数据
data_Trend = xlsread("dataguOne.xlsx") 
dT = data_Trend(:,1:1)';%选取第1列
step=5
Delays = [1:step]; % 滑动窗口 
[input, output] = CreateTimeSeriesData(dT, Delays);% 构造时间序列数据函数 
%%  重构数据
res=[input',output'];
%%  导入数据
% res = xlsread('dataguM.xlsx');

%%  数据分析
train_size = 0.8;                              % 训练集占数据集比例
outdim = 1;                                  % 最后一列为输出
all_samples = size(res, 1);                  % 样本个数
num_trains = round(train_size * all_samples); % 训练集样本个数
in_ = size(res, 2) - outdim;                  % 输入特征维度
%%  划分训练集和测试集
P_train = res(1: num_trains, 1: in_)';
T_train = res(1: num_trains, end)';
M = size(P_train, 2);

P_test = res(num_trains+1: end, 1: in_)';
T_test = res(num_trains+1: end, end)';
N = size(P_test, 2);

%%  数据reshape
p_train =  double(reshape(P_train, in_, 1, 1, M));
p_test  =  double(reshape(P_test , in_, 1, 1, N));
t_train =  double(T_train)';
t_test  =  double(T_test )';

%%  构造网络layers
layers = [
 imageInputLayer([in_, 1, 1])      % 输入层 输入数据规模[in_, 1, 1]
 convolution2dLayer([3, 1], 16)  % 卷积核大小
 batchNormalizationLayer         % 批归一化层
 reluLayer                       % Relu激活层
 convolution2dLayer([3, 1], 32)  % 卷积核大小 
 batchNormalizationLayer         % 批归一化层
 reluLayer                       % Relu激活层
 dropoutLayer(0.1)               % Dropout层
 fullyConnectedLayer(1)          % 全连接层
 regressionLayer];               % 回归层




%%  模型预测
T_sim1 = predict(net, p_train);
T_sim2 = predict(net, p_test );

%%  均方根误差
error1 = sqrt(sum((T_sim1' - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2' - T_test ).^2) ./ N);

%%  绘制网络图
analyzeNetwork(layers)

%%  绘图
figure
plot(1: M, T_train, 'r-*', 1: M, T_sim1, 'b-o', 'LineWidth', 1)
legend('真实值', '预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'训练集预测结果对比'; ['RMSE=' num2str(error1)]};
title(string)
xlim([1, M])
grid

figure
plot(1: N, T_test, 'r-*', 1: N, T_sim2, 'b-o', 'LineWidth', 1)
legend('真实值', '预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'测试集预测结果对比'; ['RMSE=' num2str(error2)]};
title(string)
xlim([1, N])
grid

%%  评价指标计算
%  R2
R1 = 1 - norm(T_train - T_sim1')^2 / norm(T_train - mean(T_train))^2;
R2 = 1 - norm(T_test  - T_sim2')^2 / norm(T_test  - mean(T_test ))^2;

disp(['训练集数据的R2为:', num2str(R1)])
disp(['测试集数据的R2为:', num2str(R2)])

%  MAE
mae1 = sum(abs(T_sim1' - T_train)) ./ M ;
mae2 = sum(abs(T_sim2' - T_test )) ./ N ;

disp(['训练集数据的MAE为:', num2str(mae1)])
disp(['测试集数据的MAE为:', num2str(mae2)])

 

评价指标:

训练集数据的R2为:0.97795
测试集数据的R2为:0.22651
训练集数据的MAE为:1.2622
测试集数据的MAE为:6.2496

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

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

相关文章

idea-创建java8的springboot项目

现在使用IDEA创建 Spring Boot 项目,jdk 版本最低要求为 17。Spring Boot 官方在全力维护 3.x 版本,而 Spring Boot 3.x 对 jdk 版本的最低要求为17。 如果需要继续使用 jdk8,则需要修改 Server URL ,改成:https://st…

electron的学习基础汇总

通过学习electron了解一下做项目中好奇的问题,我觉得下面这张图就可以说明一切了,就是在初次创建并显示主窗口后,一切都将建立在渲染进程和主进程的通信上,而用的技术就是ipcMain和ipcRender,那么渲染进程如何与主进程…

X-Bogus逆向分析(纯算+补环境)

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 前言 此平台 本人 仅限…

储能逆变器测试负载箱解决方案

储能逆变器是新能源领域的重要设备,其性能的优劣直接影响到整个系统的运行效率和稳定性。因此,对储能逆变器进行严格的测试和验证是保证其性能的关键步骤。在这个过程中,负载箱是必不可少的工具,它可以模拟真实的负载条件&#xf…

JUC并发编程——对于synchronized关键字的理解

现象🔍: 两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,最后输出的 counter一定为0 吗? Slf4j(topic "c.Test17") public class Test17 {static int counter 0;public…

可望而不可即的“人文关怀”

死亡既然是最后的归宿,生命的必然,自然也就没有必要过多地害怕了。一切顺其自然,交给“命运”就是了。 我参观过英国的临终关怀医院,这是世界上最早的一所临终关怀医院,已有100多年历史。 那里的大多数病人都只剩一个…

第1章.提示词:开启AI智慧之门的钥匙

什么是提示词? 提示词,是引导语言模型的指令,让用户能够驾驭模型的输出,确保生成的文本符合需求。 ChatGPT,这位文字界的艺术大师,以transformer架构为基石,能轻松驾驭海量数据,编织…

【机器学习之---数学】马尔科夫链

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 马尔科夫 1. 概念 1.1 引言 马尔可夫链在许多领域都有应用,包括物理学、生物学、工程学、经济学和计算机科学等。在计算机科学中&#xff0…

QT使用数据库

数据库就是保存数据的文件。可以存储大量数据,包括插入数据、更新数据、截取数据等。用专业术语来说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。 什么时候需要数据库?在嵌入式里,存储大量数据,或者记录数…

Kubernetes篇(二)— 集群环境搭建

目录 前言一、 环境规划集群类型安装方式主机规划 二、环境搭建主机安装环境初始化安装docker安装kubernetes组件准备集群镜像集群初始化安装网络插件 三、 服务部署 前言 本章节主要介绍如何搭建kubernetes的集群环境 一、 环境规划 集群类型 kubernetes集群大体上分为两类…

(C语言) fgetc与fputc函数详解

目录 1 fgetc函数详解 1.1 从文件流中读取数据 1.2 从标准输入流中读取数据 2 fputc函数详解 2.1 向文件流中写入数据 2.2 向标准输出流中写入数据 1 fgetc函数详解 头文件:stdio.h 该函数只有一个参数:stream 作用:从输入流中获得一个…

Gif动态图片如何制作?悄悄告诉你两招就能做!

怎么制作gif动态图片?Gif动图在我们的日常生活中非常的常见,尤其是在各大聊天软件中。当我们想要自己制作这种有趣的gif动图的时候要怎么办呢?很简单,制作gif动图的方法通常有两种,一种是视频转换gif另一种就是图片合成…

最大子序列(蓝桥杯,acwing,单调队列)

题目描述: 输入一个长度为 n 的整数序列,从中找出一段长度不超过 m 的连续子序列,使得子序列中所有数的和最大。 注意: 子序列的长度至少是 1。 输入格式: 第一行输入两个整数 n,m。 第二行输入 n 个数&#xff0…

CATSploit:一款基于CATS的自动化渗透测试执行工具

关于CATSploit CATSploit是一款基于CATS的自动化渗透测试执行工具,该工具基于网络攻击技术评分(CATS)方法实现其功能,可以在无需渗透测试人员操作的情况下,自动对目标应用执行安全渗透测试。 在执行渗透测试的过程中&…

【leetcode】力扣简单题两数之和

题目 思路 代码实现 #include<iostream> #include<unordered_map>using namespace std;class Solution { public:vector<int> TwoNumber(const vector<int>& nums, int target){vector<int> number_vector;unordered_map<int, int> …

【PyQt学习篇 · ⑮】:qrc/rcc资源系统

文章目录 qrc使用介绍rcc编译资源rcc 的安装与基本使用 编译成Python文件使用资源系统文件方式一&#xff1a;导入资源系统文件方式二&#xff1a;整合资源系统文件 qrc使用介绍 在PyQt中&#xff0c;qrc文件是一种资源文件&#xff0c;用于将应用程序所需的资源&#xff08;如…

pmp培训机构哪个比较好?国内10大热门PMP培训机构是哪些?

热门PMP培训机构推荐&#xff0c;PMP备考选择威班就是选择了高通过率 PMP热门培训机构方面我还是比较推荐威班的&#xff0c;当时选择的时候有人推荐我&#xff0c;也了解了很多&#xff0c;各种科普各种对比选择&#xff0c;最后还是选择了威班。经过体验他们的通过率比较靠谱…

Math类

java.lang.Math 提供了一系列静态方法用于科学计算&#xff0c;常用方法如下&#xff1a; abs 绝对值 acos&#xff0c;asin&#xff0c;atan&#xff0c;cos&#xff0c;sin&#xff0c;tan 三角函数 sqrt 平方根 pow(double a,double b) a的b次幂 max(double a,double b) 取大…

LiteFlow逻辑流引擎集成验证

本文将介绍开源逻辑流组件LiteFlow的架构、设计思想和适用场景&#xff0c;如何基于springboot集成LiteFlow&#xff0c;并验证DSL多种逻辑流程&#xff0c;以及逻辑流设计器的开发思路。 一、逻辑流解决什么问题 在每个公司的系统中&#xff0c;总有一些拥有复杂业务逻辑的系…

喜报 | 攸信技术再获殊荣,被授予厦门攸信智能制造系统研发中心

近日&#xff0c;厦门攸信信息技术有限公司凭借其卓越的科技创新实力和突出的研发成果&#xff0c;经过厦门市科学技术局的严格筛选与评审&#xff0c;三月份被正式授予“厦门攸信智能制造系统研发中心”的荣誉称号。 2023年12月&#xff0c;厦门市科学技术局积极响应《厦门市关…