股票前一日所有数据预测下一日收盘价格lstm程序
时间: 2023-12-19 19:07:10 浏览: 84
基于LSTM的股票数据预测(Python完整源码和数据)
5星 · 资源好评率100%
以下是使用 LSTM(长短期记忆网络)进行股票收盘价格预测的示例程序:
```python
import tushare as ts
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
# 获取某只股票的历史行情数据
df = ts.get_hist_data('600519')
# 数据预处理
df = df.dropna() # 去除缺失值
# 特征选择与处理
features = ['open', 'high', 'low', 'close', 'volume']
data = df[features].values
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)
# 构造训练集和测试集
X = scaled_data[:-1] # 输入特征,取除最后一天以外的所有数据
y = scaled_data[1:, 3] # 输出标签,取除第一天以外的所有收盘价数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 转换数据维度为 [样本数,时间步长,特征数]
X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))
# 构建 LSTM 模型
model = Sequential()
model.add(LSTM(64, input_shape=(1, len(features)), return_sequences=True))
model.add(LSTM(32))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# 训练模型
model.fit(X_train, y_train, epochs=100, batch_size=32, verbose=1)
# 在测试集上进行预测
predicted_prices = model.predict(X_test)
predicted_prices = scaler.inverse_transform(predicted_prices) # 反缩放预测结果
# 打印预测结果与实际值
for i in range(len(y_test)):
print("预测值:{:.2f},实际值:{:.2f}".format(predicted_prices[i][0], y_test[i]))
# 在最新的一天数据上进行预测
latest_data = scaled_data[-1].reshape(1, 1, len(features))
next_day_price = model.predict(latest_data)
next_day_price = scaler.inverse_transform(next_day_price)
print("下一日收盘价格的预测值:{:.2f}".format(next_day_price[0][0]))
```
这个示例程序使用了股票的开盘价、最高价、最低价、收盘价和成交量作为输入特征,预测下一日的收盘价格。它首先对数据进行了缩放,然后构建了一个两层的 LSTM 模型,使用均方误差作为损失函数进行训练。训练完成后,使用测试集进行预测并反缩放预测结果,最后打印预测结果和实际值。在最新的一天数据上进行预测并打印预测结果。
请注意,这只是一个简单的示例程序,实际中还需要根据具体情况进行调参和优化。另外,股票市场受到多种因素的影响,预测股票价格是一个复杂且充满挑战的任务,单一模型的预测结果可能会受到限制。因此,在实际应用中,你可能需要结合其他模型或使用更复杂的方法来提高预测准确性。
希望对你有所帮助!如果你还有其他问题,请随时提问。
阅读全文