如何使用LSTM做时间序列预测,python代码
时间: 2024-05-01 14:20:20 浏览: 133
基于lstm汇率预测. 时间序列预测 完整代码 计算机毕设
使用LSTM进行时间序列预测的步骤如下:
1. 准备数据集并进行预处理
2. 划分训练集和测试集
3. 构建LSTM模型
4. 训练模型并进行预测
5. 评估模型性能并进行可视化展示
以下是使用Python实现LSTM时间序列预测的示例代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense, LSTM
# 准备数据集并进行预处理
data = pd.read_csv('data.csv')
data = data.dropna() # 删除空值
data = data['value'].values.reshape(-1, 1) # 转换为二维数组
data = data.astype('float32') # 转换为浮点型
# 划分训练集和测试集
train_size = int(len(data) * 0.8) # 训练集占80%
test_size = len(data) - train_size
train_data, test_data = data[0:train_size,:], data[train_size:len(data),:]
# 构建LSTM模型
look_back = 3 # 每个样本包含3个时间步的特征
model = Sequential()
model.add(LSTM(4, input_shape=(1, look_back)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# 训练模型并进行预测
X_train, y_train = [], []
for i in range(look_back, len(train_data)):
X_train.append(train_data[i-look_back:i, 0])
y_train.append(train_data[i, 0])
X_train, y_train = np.array(X_train), np.array(y_train)
X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
model.fit(X_train, y_train, epochs=100, batch_size=1, verbose=2)
inputs = data[len(data) - len(test_data) - look_back:]
inputs = inputs.reshape(-1, 1)
X_test = []
for i in range(look_back, len(test_data)+look_back):
X_test.append(inputs[i-look_back:i, 0])
X_test = np.array(X_test)
X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))
predicted = model.predict(X_test)
# 评估模型性能并进行可视化展示
mse = np.mean((predicted - test_data)**2)
print('MSE:', mse)
plt.plot(test_data, label='true')
plt.plot(predicted, label='predicted')
plt.legend()
plt.show()
```
其中,`data.csv`为时间序列数据集文件,`value`为时间序列数值。代码中使用了3个时间步的特征,即每个样本包含连续的3个时间点的数值,可以根据实际情况进行修改。模型训练过程中使用Adam优化器和均方误差损失函数,训练100个epochs。最后,输出模型的MSE评估指标,并可视化展示预测结果。
阅读全文