LSTM是一种基于RNN的神经网络,用于处理具有输入和输出延迟的问题。
优点:可以处理长序列输入输出数据;具有较高的准确性和预测能力。缺点:需要大量的数据处理。
话不多说,如下是结果:
不同的参数对应的是不同的结果,模型训练难在调整参数。
代码如下
# 导入所需的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
# 读取数据
data = pd.read_csv("GP13.csv")
# 重命名列名为'LSTM'要求的'Values'
data.rename(columns={
'Value': 'Values'}, inplace=True)
# 构建数据集
dataset = data['Values'].values
dataset = dataset.reshape(-1, 1)
# 数据归一化
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)
# 将数据集划分为训练集和测试集(最后一个月作为测试集)
train_size = int(len(dataset) * 0.7)
train_data = dataset[:train_size, :]
test_data = dataset[train_size:, :]
# 创建序列化训练数据集
def create_dataset(data, time_steps=1):
X, Y = [], []
for i in range(len(data) - time_steps):
a = data[i:(i + time_steps), 0]
X.append(a)
Y.append(data[i + time_steps, 0])
return np.array(X), np.array(Y)
# time_steps = 10 # 时间步长,可以根据需求进行调整
# time_steps = 2 # 时间步长,可以根据需求进行调整
time_steps = 1 # 时间步长,可以根据需求进行调整
X_train, y_train = create_dataset(train_data, time_steps)
X_test, y_test = create_dataset(test_data, time_steps)
# 转换训练数据和测试数据的形状
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1