keras LSTM股票
时间: 2024-12-31 10:45:40 浏览: 11
### 使用 Keras LSTM 进行股票价格预测
#### 构建 LSTM 模型
为了构建用于股票价格预测的 LSTM 模型,首先需要定义模型结构。此过程涉及创建一个顺序模型并添加多个层以提高性能。
```python
import tensorflow as tf
from tensorflow import keras
model = keras.models.Sequential()
model.add(keras.layers.LSTM(units=64, return_sequences=True, input_shape=(X_train.shape[1], 1)))
model.add(keras.layers.LSTM(units=64))
model.add(keras.layers.Dense(128))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Dense(1))
print(model.summary())
```
上述代码展示了如何设置两层 LSTM 层以及全连接层和 Dropout 层来防止过拟合[^2]。
#### 数据预处理
在应用 LSTM 前,需对原始金融数据执行必要的转换操作。这通常包括标准化数值范围、划分训练集与测试集,并将时间序列重新排列成适合输入到 LSTM 中的形式。
```python
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data)
def create_dataset(dataset, time_step=1):
dataX, dataY = [], []
for i in range(len(dataset)-time_step-1):
a = dataset[i:(i+time_step), 0]
dataX.append(a)
dataY.append(dataset[i + time_step, 0])
return np.array(dataX), np.array(dataY)
time_step = 60
X_train, y_train = create_dataset(scaled_data, time_step)
```
这段脚本说明了怎样准备适用于 LSTM 输入的数据格式。
#### 编译与训练模型
完成模型搭建之后,下一步就是编译它,并用历史股价资料对其进行训练:
```python
model.compile(optimizer='adam', loss='mean_squared_error')
history = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)
```
这里选择了 Adam 优化器和均方误差作为损失函数来进行监督学习下的参数调整。
#### 测试与评估
最后,在新收集的时间窗口上运行经过充分训练后的 LSTM 来做未来几天内可能的价格变动趋势估计;同时也可以绘制图表对比实际收盘价同预测值之间的差异情况以便直观理解效果好坏。
```python
test_predict = model.predict(X_test)
predicted_prices = scaler.inverse_transform(test_predict)
plt.plot(real_stock_price, color='black', label='Real Stock Price')
plt.plot(predicted_prices, color='green', label='Predicted Stock Price')
plt.title('Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Stock Price')
plt.legend()
plt.show()
```
通过这种方式能够可视化地展示出 LSTM 对于特定时间段内的股市行情变化规律的学习成果。
阅读全文