请写一个完整的lstm预测股票的例子,python3.7,tensorflow1.15,数据包括交易量,最高价,最低价,收盘价
时间: 2024-10-25 11:16:30 浏览: 40
基于Python实现LSTM、GRU、BiLSTM预测股票价格比较研究(源码+数据)
在Python 3.7环境中,使用TensorFlow 1.15来编写一个简单的LSTM股票预测模型,我们将使用Keras库作为高级API。这里假设我们已经有了数据,并已按时间序列进行了预处理。以下是整个例子的步骤:
```python
# 导入所需库
import numpy as np
import pandas as pd
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM, Dropout
from sklearn.preprocessing import MinMaxScaler
# 加载并预处理数据
data = pd.read_csv('stock_data.csv') # 假设CSV文件有交易量、最高价、最低价、收盘价等列
df = data[['交易量', '最高价', '最低价', '收盘价']].astype(float)
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(df.values)
# 时间序列划分
time_steps = 60 # 假设每个样本由过去60天的数据组成
X, y = [], []
for i in range(len(scaled_data) - time_steps):
X.append(scaled_data[i:i+time_steps])
y.append(scaled_data[i+time_steps])
X = np.array(X)
y = np.array(y)
# 数据重塑以便于LSTM处理
X = np.reshape(X, (X.shape[0], X.shape[1], 1))
# 构建LSTM模型
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(X.shape[1], X.shape[2])))
model.add(Dropout(0.2))
model.add(LSTM(units=50, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(units=1))
# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')
# 训练模型
model.fit(X, y, epochs=100, batch_size=32)
# 预测
predictions = model.predict(X_test) # X_test是你未使用的测试集部分
# 反归一化预测结果
predictions = scaler.inverse_transform(predictions)
# 结果展示
print(predictions[:5])
```
在这个例子中,我们首先加载数据并进行预处理,然后创建一个LSTM模型,设置时间步数为60天,输入特征为四个价格指标。模型训练完成后,对未来的股票价格进行预测并进行反归一化。
阅读全文