时间序列预测lstm模型完整代码
时间: 2024-03-29 09:32:38 浏览: 230
基于LSTM神经网络的时间序列预测(Python完整源码和数据)
5星 · 资源好评率100%
时间序列预测是一种常见的任务,LSTM(长短期记忆)模型是一种适用于处理时间序列数据的循环神经网络模型。下面是一个简单的时间序列预测LSTM模型的完整代码示例:
```python
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import LSTM, Dense
# 读取时间序列数据
data = pd.read_csv('data.csv')
# 数据预处理
train_data = data[:800] # 前800个数据作为训练集
test_data = data[800:] # 后面的数据作为测试集
# 构建训练集和测试集
def create_dataset(dataset, look_back=1):
X, Y = [], []
for i in range(len(dataset)-look_back):
X.append(dataset[i:i+look_back])
Y.append(dataset[i+look_back])
return np.array(X), np.array(Y)
look_back = 10 # 设置时间窗口大小
train_X, train_Y = create_dataset(train_data, look_back)
test_X, test_Y = create_dataset(test_data, look_back)
# 构建LSTM模型
model = Sequential()
model.add(LSTM(units=50, input_shape=(look_back, 1)))
model.add(Dense(units=1))
model.compile(optimizer='adam', loss='mean_squared_error')
# 模型训练
model.fit(train_X, train_Y, epochs=100, batch_size=32)
# 模型预测
train_predict = model.predict(train_X)
test_predict = model.predict(test_X)
# 可视化结果
import matplotlib.pyplot as plt
plt.plot(train_data, label='Original data')
plt.plot(range(look_back, len(train_predict)+look_back), train_predict, label='Train prediction')
plt.plot(range(look_back+len(train_predict), len(train_data)), test_predict, label='Test prediction')
.legend()
plt.show()
```
这段代码实现了一个简单的时间序列预测LSTM模型。首先,读取时间序列数据,并将数据划分为训练集和测试集。然后,通过`create_dataset`函数构建输入特征和标签。接下来,使用`Sequential`模型构建LSTM模型,并编译模型。然后,使用训练集对模型进行训练。最后,使用训练好的模型对训练集和测试集进行预测,并将结果可视化展示出来。
阅读全文