提供tensorflow 的 多变量多步预测LSTM程序,从EXCEL文件加载数据,已知输入特征量有6个,1个输出变量(AQI),要求2个时间步,输出预测数据以及预测图形,在数据处理过程中有归一化和反归一化
时间: 2024-04-13 19:29:58 浏览: 195
以下是一个使用TensorFlow实现的多变量多步预测的LSTM程序,可以从Excel文件加载数据,并进行归一化和反归一化处理。
import pandas as pd
import numpy as np
import tensorflow as tf
from sklearn.preprocessing import MinMaxScaler
# 从Excel文件加载数据
def load_data(file_path):
data = pd.read_excel(file_path)
return data.values
# 归一化数据
def normalize_data(data):
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)
return scaled_data, scaler
# 反归一化数据
def denormalize_data(scaled_data, scaler):
data = scaler.inverse_transform(scaled_data)
return data
# 创建数据集
def create_dataset(data, look_back):
X, Y = [], []
for i in range(len(data)-look_back-1):
X.append(data[i:(i+look_back), :])
Y.append(data[(i+look_back), 0])
return np.array(X), np.array(Y)
# 加载数据
data = load_data('data.xlsx')
# 设置随机种子
tf.random.set_seed(0)
# 定义超参数
look_back = 2 # 时间步数
n_features = 6 # 输入特征量个数
# 归一化数据
scaled_data, scaler = normalize_data(data)
# 创建数据集
X, Y = create_dataset(scaled_data, look_back)
# 划分训练集和测试集
train_size = int(len(X) * 0.7)
test_size = len(X) - train_size
X_train, X_test = X[0:train_size], X[train_size:len(X)]
Y_train, Y_test = Y[0:train_size], Y[train_size:len(Y)]
# 构建LSTM模型
model = tf.keras.models.Sequential([
tf.keras.layers.LSTM(64, input_shape=(look_back, n_features)),
tf.keras.layers.Dense(1)
])
# 编译模型
model.compile(optimizer=tf.keras.optimizers.Adam(), loss='mean_squared_error')
# 训练模型
model.fit(X_train, Y_train, epochs=100, batch_size=16)
# 预测数据
train_predict = model.predict(X_train)
test_predict = model.predict(X_test)
# 反归一化数据
train_predict = denormalize_data(train_predict, scaler)
test_predict = denormalize_data(test_predict, scaler)
# 输出预测数据
print("训练集预测结果:")
print(train_predict)
print("测试集预测结果:")
print(test_predict)
# 输出预测图形
import matplotlib.pyplot as plt
plt.plot(Y_test, label='Actual')
plt.plot(test_predict, label='Predicted')
plt.legend()
plt.show()
请确保已安装所需的依赖库(例如pandas、numpy、tensorflow、scikit-learn和matplotlib)并将Excel文件的路径正确设置为file_path
变量的值。运行程序后,将输出训练集和测试集的预测结果,并显示预测图形。
相关推荐

















