lstm时间序列预测股价python
时间: 2024-09-24 19:27:47 浏览: 19
LSTM(长短期记忆网络)是一种递归神经网络,特别适合处理时间序列数据,如股票价格预测。在Python中,你可以使用深度学习库Keras或TensorFlow来进行LSTM模型的构建。以下是基本步骤:
1. **数据准备**:首先,你需要获取历史股票价格数据,并将其划分为训练集和测试集。通常会采用技术指标如收盘价、开盘价、最高价、最低价等作为输入特征。
```python
import pandas as pd
data = pd.read_csv('stock_data.csv')
```
2. **数据预处理**:将数据转化为适合模型的形式,包括填充缺失值、归一化或标准化。
```python
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data['Close'] = scaler.fit_transform(data[['Close']])
```
3. **序列生成**:将历史数据转化为滑动窗口形式,生成训练样本和对应的标签(下一个时间步的收盘价)。
```python
def create_dataset(dataset, look_back=1):
dataX, dataY = [], []
for i in range(len(dataset)-1):
a = dataset[i:(i+look_back), 0]
dataX.append(a)
dataY.append(dataset[i + look_back, 0])
return np.array(dataX), np.array(dataY)
look_back = 5
X_train, y_train = create_dataset(data['Close'].values, look_back)
```
4. **构建模型**:使用Keras构建一个包含LSTM层的模型,加上适当的 Dense 层用于回归。
```python
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential()
model.add(LSTM(50, input_shape=(look_back, 1)))
model.add(Dense(1))
```
5. **训练模型**:编译模型,设置损失函数(比如mean_squared_error)、优化器(如Adam)并训练它。
```python
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(X_train, y_train, epochs=100, batch_size=64)
```
6. **预测与评估**:使用训练好的模型对未来股价进行预测,然后可以计算预测结果与实际值之间的误差。
```python
yhat = model.predict(X_test)
```