计算机毕业设计之基于tensorflow-lstm的股票爬虫+预测及可视化

1 简介

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、编程领域优质创作者,博客之星、各平台优质作者、专注于Java,python等技术领域和毕业项目实战✌

🍅文末获取源码联系🍅
计算机毕业设计之基于tensorflow-lstm的股票爬虫+预测及可视化

2 设计概要

本章基于深度学习算法来处理时间序列,来预测股票未来的价格。LSTM是一种特殊类型的循环神经网络(RNN),在自然语言处理和时间序列数据分析等任务中取得了显著成果。LSTM通过处理序列数据中的长期依赖关系,能够更好地捕捉时间序列数据的特征和模式。这使得它成为预测股票价格这类时间相关数据的有力工具。关于LSTM 在之前的文章中也略作介绍。
n_past是我们在预测下一个目标值时将在过去查看的步骤数。
这里使用30,意味着将使用过去的30个值(包括目标列在内的所有特性)来预测第31个目标值。
因此,在trainX中我们会有所有的特征值,而在trainY中我们只有目标值。
让我们分解for循环的每一部分
对于训练,dataset = df_for_training_scaled, n_past=30
当i= 30:
data_X.addend (df_for_training_scaled[i - n_past:i, 0:df_for_training.shape[1]])
从n_past开始的范围是30,所以第一次数据范围将是-[30 - 30,30,0:6] 相当于 [0:30,0:6]
因此在dataX列表中,df_for_training_scaled[0:30,0:6]数组将第一次出现。
现在, dataY.append(df_for_training_scaled[i,3])

i = 30,所以它将只取第30行开始的close(因为在预测中,我们只需要close列,所以列范围仅为3,表示close列)。
第一次在dataY列表中存储df_for_training_scaled[30,3]值。
所以包含5列的前30行存储在dataX中,只有close列的第31行存储在dataY中。然后我们将dataX和dataY列表转换为数组,它们以数组格式在LSTM中进行训练。

将数据集拆分为训练集、验证集和测试集。由于这个数据集是时间序列,以2023年前的数据作为训练集,之后数据为验证集。

3 系统关键技术

具体请直接咨询,以回复为准,使用Java,python,springboot,vue,mysql, mybaties, typescript, html ,css, js 等进行开发

4 开发工具

开发工具主要有:idea、jdk1.8、maven、mysql5.7、Navicat等。

5 代码展示

def createXY(dataset,n_past):
    j=0
    dataX = []
    dataY = []
    for i in range(n_past, len(dataset)):       
        x=dataset[i - n_past:i, 0:dataset.shape[1]]
        if (i+n_past>=len(dataset)):
            y=0
        else:
            y=dataset[i-1+n_past,3]
        dataX.append(x) 
        dataY.append(y)    
    return np.array(dataX),np.array(dataY) 
dataX,dataY=createXY(df_scaled,30)

6 系统功能描述

项目功能演示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7 最后

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dual-CNN+Bi-LSTM (DCNN+Bi-LSTM)是一种结合了Dual-CNN和Bi-LSTM的网络模型,用于文本分类任务。它的结构包括两个主要部分:Dual-CNN和Bi-LSTM。 Dual-CNN是一种使用两个不同大小的卷积核进行卷积操作的模型。它的目的是捕捉不同大小的语义信息。通过使用不同大小的卷积核,Dual-CNN可以同时捕捉局部和全局的语义特征。 Bi-LSTM是一种双向长短期记忆网络,用于学习文本中的上下文信息。Bi-LSTM通过同时考虑前向和后向的上下文信息,可以更好地理解文本的语义。 下面是一个示例代码,演示了如何实现Dual-CNN+Bi-LSTM模型: ```python import tensorflow as tf from tensorflow.keras.layers import Input, Embedding, Conv1D, MaxPooling1D, Bidirectional, LSTM, Dense # 定义输入层 input_layer = Input(shape=(max_length,)) # 定义嵌入层 embedding_layer = Embedding(vocab_size, embedding_dim)(input_layer) # 定义Dual-CNN层 conv1 = Conv1D(filters=32, kernel_size=3, activation='relu')(embedding_layer) conv2 = Conv1D(filters=32, kernel_size=5, activation='relu')(embedding_layer) pool1 = MaxPooling1D(pool_size=2)(conv1) pool2 = MaxPooling1D(pool_size=2)(conv2) # 将Dual-CNN层的输出拼接起来 concat = tf.keras.layers.concatenate([pool1, pool2], axis=1) # 定义Bi-LSTMlstm = Bidirectional(LSTM(64))(concat) # 定义输出层 output_layer = Dense(num_classes, activation='softmax')(lstm) # 定义模型 model = tf.keras.Model(inputs=input_layer, outputs=output_layer) # 编译模型 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(X_train, y_train, epochs=10, batch_size=32) # 使用模型进行预测 predictions = model.predict(X_test) ``` 请注意,上述代码中的`max_length`是输入文本的最大长度,`vocab_size`是词汇表的大小,`embedding_dim`是嵌入层的维度,`num_classes`是分类的类别数。你需要根据你的具体任务进行相应的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值