LSTM模型预测时间序列代码
以下是一个简单的LSTM模型预测时间序列的Python代码示例:
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense, LSTM
# 生成数据
data = pd.Series(np.sin(np.arange(0, 20*np.pi, 0.1)), index=pd.date_range('20200101', periods=2000))
# 构建训练数据
lookback = 50
train_size = int(len(data) * 0.8)
train_data = []
train_label = []
for i in range(lookback, train_size):
train_data.append(data.iloc[i-lookback:i])
train_label.append(data.iloc[i])
train_data = np.array(train_data)
train_label = np.array(train_label)
# 构建测试数据
test_data = []
test_label = []
for i in range(train_size+lookback, len(data)):
test_data.append(data.iloc[i-lookback:i])
test_label.append(data.iloc[i])
test_data = np.array(test_data)
test_label = np.array(test_label)
# 构建LSTM模型
model = Sequential()
model.add(LSTM(50, input_shape=(lookback, 1)))
model.add(Dense(1))
model.compile(loss='mse', optimizer='adam')
# 训练模型
model.fit(train_data.reshape(train_data.shape[0], train_data.shape[1], 1), train_label, epochs=100, batch_size=32)
# 预测数据
predict_train = model.predict(train_data.reshape(train_data.shape[0], train_data.shape[1], 1))
predict_test = model.predict(test_data.reshape(test_data.shape[0], test_data.shape[1], 1))
# 可视化结果
import matplotlib.pyplot as plt
plt.plot(data.index[lookback:train_size], train_label, label='train true')
plt.plot(data.index[lookback:train_size], predict_train, label='train predict')
plt.plot(data.index[train_size+lookback:], test_label, label='test true')
plt.plot(data.index[train_size+lookback:], predict_test, label='test predict')
plt.legend()
plt.show()
该代码首先生成一个sin函数的时间序列数据,然后将其划分为训练集和测试集。接着构建训练数据和测试数据,将前50个时间步的数据作为输入特征,下一个时间步的数据作为输出标签。然后使用Keras框架构建一个LSTM模型,最后通过训练模型并预测数据来得到模型的预测结果。最后,将预测结果可视化。
原文地址: https://www.cveoy.top/t/topic/bB7P 著作权归作者所有。请勿转载和采集!