深度学习 交易预测 LSTM 层的神经元数量、训练轮数

以下是一个使用 Python 和 Keras 库构建 LSTM 模型进行交易预测的代码示例,同时会展示如何调整 LSTM 层的神经元数量和训练轮数,代码中还包含了不同参数下的实验对比,帮助你理解它们对模型性能的影响。

示例代码

import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt# 数据加载与预处理
def load_and_preprocess_data(file_path):data = pd.read_csv(file_path)close_prices = data['Close'].values.reshape(-1, 1)scaler = MinMaxScaler(feature_range=(0, 1))scaled_close_prices = scaler.fit_transform(close_prices)return scaled_close_prices, scaler# 创建时间序列数据
def create_sequences(data, seq_length):xs, ys = [], []for i in range(len(data) - seq_length):x = data[i:i+seq_length]y = data[i+seq_length]xs.append(x)ys.append(y)return np.array(xs), np.array(ys)# 构建 LSTM 模型
def build_lstm_model(seq_length, neurons):model = Sequential()model.add(LSTM(neurons, return_sequences=True, input_shape=(seq_length, 1)))model.add(LSTM(neurons, return_sequences=False))model.add(Dense(25))model.add(Dense(1))model.compile(optimizer='adam', loss='mean_squared_error')return model# 训练和评估模型
def train_and_evaluate_model(X_train, y_train, X_test, y_test, scaler, neurons, epochs):model = build_lstm_model(X_train.shape[1], neurons)model.fit(X_train, y_train, batch_size=32, epochs=epochs, verbose=0)predictions = model.predict(X_test)predictions = scaler.inverse_transform(predictions)y_test = scaler.inverse_transform(y_test)mse = mean_squared_error(y_test, predictions)return mse, predictions# 主函数
def main():file_path = 'your_stock_data.csv'scaled_close_prices, scaler = load_and_preprocess_data(file_path)train_size = int(len(scaled_close_prices) * 0.8)train_data = scaled_close_prices[:train_size]test_data = scaled_close_prices[train_size:]seq_length = 30X_train, y_train = create_sequences(train_data, seq_length)X_test, y_test = create_sequences(test_data, seq_length)# 不同神经元数量和训练轮数的实验neuron_options = [30, 50, 70]epoch_options = [30, 50, 70]results = []for neurons in neuron_options:for epochs in epoch_options:mse, predictions = train_and_evaluate_model(X_train, y_train, X_test, y_test, scaler, neurons, epochs)results.append((neurons, epochs, mse))print(f'Neurons: {neurons}, Epochs: {epochs}, MSE: {mse}')# 可视化结果best_result = min(results, key=lambda x: x[2])best_neurons, best_epochs, _ = best_resultbest_model_mse, best_predictions = train_and_evaluate_model(X_train, y_train, X_test, y_test, scaler, best_neurons, best_epochs)plt.plot(y_test, label='Actual Prices')plt.plot(best_predictions, label='Predicted Prices')plt.xlabel('Time')plt.ylabel('Stock Price')plt.title(f'Best Model: Neurons={best_neurons}, Epochs={best_epochs}, MSE={best_model_mse:.4f}')plt.legend()plt.show()if __name__ == "__main__":main()

代码解释

  1. 数据加载与预处理
    • load_and_preprocess_data 函数用于读取 CSV 文件中的股票收盘价数据,并使用 MinMaxScaler 进行归一化处理。
  2. 创建时间序列数据
    • create_sequences 函数将数据转换为适合 LSTM 模型输入的时间序列格式。
  3. 构建 LSTM 模型
    • build_lstm_model 函数根据指定的序列长度和神经元数量构建 LSTM 模型,包含两个 LSTM 层和两个全连接层,并使用 adam 优化器和均方误差损失函数进行编译。
  4. 训练和评估模型
    • train_and_evaluate_model 函数使用指定的训练轮数训练模型,并在测试集上进行评估,返回均方误差(MSE)和预测结果。
  5. 主函数
    • main 函数中定义了不同的神经元数量和训练轮数选项,进行多次实验,并记录每次实验的 MSE。
    • 最后找出 MSE 最小的模型配置,绘制实际价格和预测价格的对比图。

注意事项

  • 请将 'your_stock_data.csv' 替换为你实际的股票数据文件路径。
  • 你可以根据需要调整 neuron_optionsepoch_options 中的参数值,进行更多不同组合的实验。
  • 实际应用中,还可以考虑使用更复杂的模型结构、添加更多特征或进行超参数调优,以提高预测性能。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用sunshine和moonlight串流时的音频输出问题

设备:电脑和平板串流,把平板当副屏使用 1.如果启用安装steam音频驱动程序,则平板有声,电脑无声,在moonlight端可以设置平板和电脑同时发声,但是有点卡 2.只想电脑发声,平板无声 禁用安装steam…

微信小程序案例2——天气微信小程序(学会绑定数据)

文章目录 一、项目步骤1 创建一个weather项目2 进入index.wxml、index.js、index.wxss文件,清空所有内容,进入App.json,修改导航栏标题为“中国天气网”。3进入index.wxml,进行当天天气情况的界面布局,包括温度、最低温、最高温、天气情况、城市、星期、风行情况,代码如下…

如何在WPS和Word/Excel中直接使用DeepSeek功能

以下是将DeepSeek功能集成到WPS中的详细步骤,无需本地部署模型,直接通过官网连接使用:1. 下载并安装OfficeAI插件 (1)访问OfficeAI插件下载地址:OfficeAI助手 - 免费办公智能AI助手, AI写作,下载…

数字电路-基础逻辑门实验

基础逻辑门是数字电路设计的核心元件,它们执行的是基本的逻辑运算。通过这些基本运算,可以构建出更为复杂的逻辑功能。常见的基础逻辑门包括与门(AND)、或门(OR)、非门(NOT)、异或门…

哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测

哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测 目录 哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测效果一览基本介绍程序设计参考资料 效果一览…

C++,STL 迭代器简介:概念、分类、操作

文章目录 引言一、迭代器的基本概念1.1 什么是迭代器?1.2 迭代器的意义二、迭代器的分类2.1 示意图:迭代器能力层级2.2 示例:不同迭代器的操作三、迭代器的常用操作3.1 基本操作3.2 随机访问迭代器专用操作示例代码:随机访问迭代器四、迭代器的通用用法4.1 遍历容器4.2 配合…

EasyExcel 导出合并层级单元格

EasyExcel 导出合并层级单元格 一、案例 案例一 1.相同订单号单元格进行合并 合并结果 案例二 1.相同订单号的单元格进行合并2.相同订单号的总数和总金额进行合并 合并结果 案例三 1.相同订单号的单元格进行合并2.相同订单号的商品分类进行合并3.相同订单号的总数和总金额…

常用的python库-安装与使用

常用的python库函数 yield关键字openslide库openslide对象的常用属性 cv2库numpy库ASAP库-multiresolutionimageinterface库ASAP库的安装ASAP库的使用 concurrent.futures.ThreadPoolExecutorxml.etree.ElementTree库skimage库PIL.Image库 PIL.Image.Imagedetectron2库数据增强…

C++基础系列【8】如何解决编译器报的错误

博主介绍:程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇&#x1f…

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<8>

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们复习前面学习的指针知识 目录 关于指针数组和数组指针的区别指针数组(Array of Poi…

UE5.5 PCGFrameWork--GPU CustomHLSL

在上一篇UE5.5 PCGFrameWork使用入门-CSDN博客 大致介绍了UE5 PCG框架的基本使用. 本篇探索PCGFrame的高级应用--GPU点云。也就是利用GPU HLSL编程对点云进行操纵,可以大幅度提升点云生成效率。 目前在UE5 PCG框架中,点云GPU的应用大致分为三类: Point…

Games202 Lecture11 LTC | Disney principled BRDF | NPR

Shading with microfacet BRDFs under polygonal lighting -Linearly Transformed Cosines(LTC)Real-Time PBR Materials cont. -Disney principled BRDFNon-photorealistic rendering(NPR) Linearly Transformed Cosines(LTC) lobe花瓣 BRDF的2d形状 基本思路: 任意BRDF变…

Flink 内存模型各部分大小计算公式

Flink 的运行平台 如果 Flink 是运行在 yarn 或者 standalone 模式的话,其实都是运行在 JVM 的基础上的,所以首先 Flink 组件运行所需要给 JVM 本身要耗费的内存大小。无论是 JobManager 或者 TaskManager ,他们 JVM 内存的大小都是一样的&a…

学习数据结构(8)双向链表

1.双向链表的实现 双向链表一般指带头双向循环链表 (1)双向链表的声明 (2)双向链表的打印 (3)向内存申请节点 (4)初始化双向链表 或 (5)尾部插入 &#xf…

【漫话机器学习系列】088.常见的输出层激活函数(Common Output Layer Activation Functions)

在神经网络中,输出层(Output Layer) 的激活函数(Activation Function)直接决定了模型的输出形式,并影响损失函数的选择及训练效果。不同的任务类型(如分类或回归)需要使用不同的激活…

Python 鼠标轨迹 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

工业相机在工业生产制造过程中的视觉检测技术应用

随着技术不断发展以及工业4.0时代的到来,利用工业相机进行视觉检测技术已经成为制造业不可或缺的一部分。通过结合先进的计算机视觉、AI算法和自动化设备,工业视觉检测为生产线质量控制和效率提升提供了革命性的解决方案。 一、什么是工业视觉检测技术 …

了解网络层

目录 一、IP协议 二、地址管理 IP地址 概念 作用 格式 网段划分 三、路由选择 网络层要做的事情主要是两个方面: 地址管理:制定一系列的规则,通过地址,描述出网络上一个设备的位置。路由选择:网络环境比较复杂…

NO.11十六届蓝桥杯备战|if-else语句|嵌套if|悬空else|练习4道(C++)

if-else语句 if语句 if语句的语法形式如下: if ( 表达式 ) 语句;表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏ 0为假,⾮0表⽰真,也就是…

Json-RPC框架项目(一)

目录 1. 项目介绍: 2. 技术选择; 3. 第三方库介绍; 4. 项目功能; 5. 模块功能; 6. 项目实现: 1. 项目介绍: RPC是远程过程调用, 像调用本地接口一样调用远程接口, 进行完成业务处理, 计算任务等, 一个完整的RPC包括: 序列化协议, 通信协议, 连接复用, 服务注册, 服务发…