卷积神经网络CNN预测苹果公司股价AAPL

2023-11-01 15:10

本文主要是介绍卷积神经网络CNN预测苹果公司股价AAPL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、CNN可以做预测吗?
  • 二、实现步骤
    • 1.准备工作(下载数据集)
    • 2.实战开始
    • (1)导入所需包
    • (2)读取数据集并处理
    • (3)重头戏,模型搭建!
    • (4)模型编译与训练
    • (5)模型预测
    • (6)效果图展示
  • 总结


前言

在大多数同学的眼中,CNN可能只是用来做图像识别的,没办法将他和预测放在一起,我也是,至少我几个小时之前才突然发现原来CNN也是可以做预测的,其实CNN做预测的原理就是利用卷积核的能力,可以感受数据一段时间的情况,根据这数据之前一段时间的情况来做出预测,原理存在,实践开始:


提示:以下是本篇文章正文内容,下面案例可供参考

一、CNN可以做预测吗?

可以。
准确的说,是所有的神经网络都可以,简单来说y=ax+b都可以预测,cnn为什么不能?[公式] ,函数 [公式] 可以有很多形式,CNN就是其中一种,当然可以给定输入,输出预测值。区别可能在于他们的功能、准确度和损失率可能有些差距,CNN大放光彩的是它在图像领域的成绩,但这并不影响他也可以出色的完成预测的任务,下面是根据前20天的苹果公司股价,来预测下一天的成交价格的实例,注释我写的简介明白。效果图如下:(红色为预测值,蓝色为实际值),虽然有点差距,但是走势一样,哈哈哈哈。
在这里插入图片描述

二、实现步骤

1.准备工作(下载数据集)

数据集可以在雅虎.财经网站上搜索苹果公司最新的股价数据,当然了也可以下载你喜欢的公司的股票数据,这是网站链接:

https://finance.yahoo.com/?guccounter=1&guce_referrer=aHR0cHM6Ly93d3cuc28uY29tL2xpbms_bT1ieExod1pPMHd1WXRiY0liZXVCOCUyQmVDZkJad2toekNmMDREZHFvUiUyRlNiUWs1SDA0eXM2SDd0OVlVU3BtOVJxdkkwaEtmdk90JTJGQkhLMzZNWHpVY0xkQWlJZ1FHZnBuVXdYU3FKYzNJT3dRUnY5ejJDek9PcVF6MGR6V0NzJTNE&guce_referrer_sig=AQAAAKEY_jOyLj9ebmmTrbI7ATJS54FU9ibrssNItDvfFchNj5bGDS7LykxqUGMGnaY1eqylsuJK45YXLk3I8LOPfhSkHYD6h1lPEkVh99bFjejA4auVtngjhvpj-R_jcG8lMVyeMp2-0hAe15Q6-jlTnJEpwM8f0rS1UnpP8NxQ7KAn

2.实战开始

(1)导入所需包

来回来去就这几个,全导入没坏处。

import tensorflow as tf 
import numpy as np 
import matplotlib. pyplot as plt 
import pandas as pd
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Flatten,Reshape,Dropout,Activation
from tensorflow.keras.layers import Conv2D,MaxPooling2D
from tensorflow.keras.layers import Conv1D,MaxPooling1D
from tensorflow.keras.optimizers import SGD
from sklearn.model_selection import train_test_split

(2)读取数据集并处理

这块看着有点多,但是其实并不复杂,我把每行都写上了注释,读取CSV文件,取出要预测的列,在将这行数据都转化为0-1的数字,最后在定义所需要的变量,比如列数x0、频率p、输入输出量X,y。最后再把数据集分成训练集和测试集,准备工作完毕!


df = pd.read_csv('AAPL.csv')  #读取APPLE 公司股票文件#df.head()  #显示前五行的股票数据
x0 =df['Adj Close'].values  #取出所需的Adj Close列,此时已经转化为了arrdy数组
#len(x0)#查看x0的行数#数据预处理,将所有的x0数据都转化为0-1之间的数字,并查看前十个数字
m=max(x0)
x0=x0/m
x0[:10]n=len(x0)#此时的n是x0的个数,p是每20天即预测一次开盘的频率
p=20x=np.array([x0[k:k+p]for k in range(n-p+1)])#将每个K以后20天的值都对应好
x.shapey=np.array(x0[p:])#y是20天预测的数据
y.shapeX=x[:-1]#X是实际可以预测到的数量,比给的数量应当少一笔
X=X[:,:,np.newaxis]#给X赋值,np.newaxis的功能:插入新维度
X.shapex_train, x_test, y_train, y_test=train_test_split(X,y,test_size=0.2,shuffle=False)  #拆分数据集,将test集为0.2,参数不同
x_train.shape

(3)重头戏,模型搭建!

一如既往选择贯序模型,这是序贯模型是多个网络层的线性堆叠,也就是“一条路走到黑”。我觉得贯序模型就比较友好,简单粗暴。
接下来就是添加一维的卷积层和池化层,还有Flatten层和全连接层,其中的参数都在注释里标的很清楚。CNN结构如下图所示。
另外,回答一个疑问:“为什莫最后的激活函数选择了relu,而不是之前一直在用的softmax”,因为这个预测,我理解的它算是一个回归问题,而sofftmax激活函数在分类问题中是最好用的,因此使用了relu。

model=Sequential()#选择贯序模型#添加一维卷积层,卷积核数量为50个4维的,补0策略为same,保留卷积后的边界,激活函数为relu,输入的尺寸形状为(20,1)
model.add(Conv1D(50,4,padding='same',activation='relu',input_shape=(p,1)))model.add(MaxPooling1D(2))#添加一维池化层,选择最大池化,(池化层大小是2,每两个数字留一个)model.add(Flatten()) #添加Flatten层,Flatten层用来将输入“压平”,即把多维的输入一维化,常用在从卷积层到全连接层的过渡。model.add(Dense(20))#20个神经元的全连接层
model.add(Dropout(0.2))#dropout是CNN中防止过拟合提高效果的一个大杀器,隐含节点dropout率设置为0.2
model.add(Activation('relu'))model.add(Dense(1))#输出层
model.add(Activation('relu'))

在这里插入图片描述

(4)模型编译与训练

编译(损失函数、优化器、评价函数)
训练(回合数为50、每次取样本为32)
因为都是数字,没有图片,CPU计算也极快,一秒就完成了,为了降低损失率,大家可以多设置回合数。当然,也可以自己修改优化器,换成Adam应该不错,而且他还有默认的学习率。

model.compile(loss='mse',optimizer=SGD(lr=0.2),metrics=['accuracy'])#编译模型,损失函数、优化器、学习率、评价函数
model.summary()#查看神经网络模型结构#训练模型+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
model.fit(x_train,y_train,epochs=50,batch_size=32)#训练50回合,每次30个样本

(5)模型预测

把测试集数据加入到模型中,就可以预测到 结果了,进行可视化处理后就能以图表形式展示啦!

#模型预测=======================================================================================================
y_predict=model.pridict(x_test)#输入测试集进行预测plt.plot(y_test[:100])
plt.plot(y_predict[:100],'r')

(6)效果图展示

在这里插入图片描述

总结

股票预测这个数据集相对好获取,数据全面且准确是个不错的练习项目。
之所以选择苹果公司这种大型公司的股票进行预测,是因为在某种意义上,大盘股被单股力量操纵的可能性比较低,通俗来说,大型公司的股票不会大起大跌,而且数据充足。
不尽人意的是:在训练过程中,也出现了categorical_accuracy: 0.0000e+00的问题,原因还在寻找,期望早点解决!

这篇关于卷积神经网络CNN预测苹果公司股价AAPL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323858

相关文章

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

深度学习实战:如何利用CNN实现人脸识别考勤系统

1. 何为CNN及其在人脸识别中的应用 卷积神经网络(CNN)是深度学习中的核心技术之一,擅长处理图像数据。CNN通过卷积层提取图像的局部特征,在人脸识别领域尤其适用。CNN的多个层次可以逐步提取面部的特征,最终实现精确的身份识别。对于考勤系统而言,CNN可以自动从摄像头捕捉的视频流中检测并识别出员工的面部。 我们在该项目中采用了 RetinaFace 模型,它基于CNN的结构实现高效、精准的

机器学习之监督学习(三)神经网络

机器学习之监督学习(三)神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一:TensorFlow搭建神经网络 4. 反向传播梯度下降 Back Propagation Gradient Descent模块二:激活函数 activ

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

基于深度学习 卷积神经网络resnext50的中医舌苔分类系统

项目概述 本项目旨在通过深度学习技术,特别是利用卷积神经网络(Convolutional Neural Networks, CNNs)中的ResNeXt50架构,实现对中医舌象图像的自动分类。该系统不仅能够识别不同的舌苔类型,还能够在PyQt5框架下提供一个直观的图形用户界面(GUI),使得医生或患者能够方便地上传舌象照片并获取分析结果。 技术栈 深度学习框架:采用PyTorch或其他

图神经网络(2)预备知识

1. 图的基本概念         对于接触过数据结构和算法的读者来说,图并不是一个陌生的概念。一个图由一些顶点也称为节点和连接这些顶点的边组成。给定一个图G=(V,E),  其 中V={V1,V2,…,Vn}  是一个具有 n 个顶点的集合。 1.1邻接矩阵         我们用邻接矩阵A∈Rn×n表示顶点之间的连接关系。 如果顶点 vi和vj之间有连接,就表示(vi,vj)  组成了

自然语言处理系列六十三》神经网络算法》LSTM长短期记忆神经网络算法

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十三神经网络算法》LSTM长短期记忆神经网络算法Seq2Seq端到端神经网络算法 总结 自然语言处理系列六十三 神经网络算法》LSTM长短期记忆神经网络算法 长短期记忆网络(LSTM,Long S

神经网络训练不起来怎么办(零)| General Guidance

摘要:模型性能不理想时,如何判断 Model Bias, Optimization, Overfitting 等问题,并以此着手优化模型。在这个分析过程中,我们可以对Function Set,模型弹性有直观的理解。关键词:模型性能,Model Bias, Optimization, Overfitting。 零,领域背景 如果我们的模型表现较差,那么我们往往需要根据 Training l

Tensorflow lstm实现的小说撰写预测

最近,在研究深度学习方面的知识,结合Tensorflow,完成了基于lstm的小说预测程序demo。 lstm是改进的RNN,具有长期记忆功能,相对于RNN,增加了多个门来控制输入与输出。原理方面的知识网上很多,在此,我只是将我短暂学习的tensorflow写一个预测小说的demo,如果有错误,还望大家指出。 1、将小说进行分词,去除空格,建立词汇表与id的字典,生成初始输入模型的x与y d

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构