股票价格预测:基于5分钟间隔数据的LSTM模型
股票价格预测:基于5分钟间隔数据的LSTM模型
本项目使用Python和LSTM模型预测股票价格,基于5分钟间隔数据进行训练。
数据准备
训练集文件: 提供某只股票近5个月开盘日每5分钟的数据(每日48条数据)。包括日期,时间,开盘,最高,最低,收盘,成交量,成交额六个特征。
测试集文件: 以5分钟为间隔,24个时间点为一个周期,提供21个时间点股票的所有数据,需要预测3个空白时间点的收盘价。
数据处理
- 读取训练集和测试集文件,并进行数据处理。
- 将日期和时间合并成一个时间戳,并将其作为索引。
- 使用Pandas中的rolling函数来计算移动窗口平均值和移动窗口标准差,作为特征输入到模型中。
模型构建与训练
使用Keras或其他机器学习框架构建LSTM模型来预测未来的收盘价。
代码示例
import pandas as pd
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, LSTM, Dropout
# 读取训练集和测试集文件
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')
# 将日期和时间合并成一个时间戳,并将其作为索引
train_df['timestamp'] = pd.to_datetime(train_df['date'] + ' ' + train_df['time'])
train_df = train_df.set_index('timestamp')
test_df['timestamp'] = pd.to_datetime(test_df['date'] + ' ' + test_df['time'])
test_df = test_df.set_index('timestamp')
# 移动窗口计算特征值
window_size = 24 * 5 # 24个时间点为一个周期,每个周期有5分钟
train_df['rolling_mean'] = train_df['close'].rolling(window=window_size).mean()
train_df['rolling_std'] = train_df['close'].rolling(window=window_size).std()
test_df['rolling_mean'] = test_df['close'].rolling(window=window_size).mean()
test_df['rolling_std'] = test_df['close'].rolling(window=window_size).std()
# 准备训练集和测试集
X_train = train_df[['rolling_mean', 'rolling_std']].values[window_size:]
y_train = train_df['close'].values[window_size:]
X_test = test_df[['rolling_mean', 'rolling_std']].values[window_size:-3]
y_test = test_df['close'].values[window_size+3:]
# 构建LSTM模型
model = Sequential()
model.add(LSTM(50, input_shape=(X_train.shape[1], 1)))
model.add(Dropout(0.2))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# 将特征值转换成LSTM输入格式
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=32)
# 预测未来3个时间点的收盘价
X_pred = test_df[['rolling_mean', 'rolling_std']].values[-3:]
X_pred = np.reshape(X_pred, (1, X_pred.shape[0], 1))
y_pred = model.predict(X_pred)
print('预测未来3个时间点的收盘价为:', y_pred)
注意
上述代码仅为示例,实际应用中可能需要进行更多的数据处理和特征工程。
总结
本项目使用LSTM模型对股票价格进行了预测,并通过移动窗口计算特征值来提高预测精度。该方法可用于金融市场分析、风险管理等领域。
原文地址: https://www.cveoy.top/t/topic/ocJO 著作权归作者所有。请勿转载和采集!