python多变量时序预测
时间: 2023-10-10 09:04:28 浏览: 48
多变量时序预测是指在预测过程中使用多个变量作为输入,以预测未来的时间序列。在Python中,可以使用LSTM(长短期记忆)神经网络来实现多变量时序预测。
在进行多变量时序预测之前,你需要导入所需的库,并加载数据。下面是一个基本的Python代码示例,展示了如何使用LSTM进行多变量时序预测:
```python
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM
from tensorflow.keras.layers import Dense, Dropout
from sklearn.preprocessing import MinMaxScaler
# 加载数据
df = pd.read_csv("train.csv", parse_dates=["Date"], index_col=[0])
# 数据预处理
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(df)
# 定义输入和输出数据
X = []
y = []
look_back = 3 # 指定历史数据的时间步长
for i in range(len(df) - look_back):
X.append(scaled_data[i:i + look_back])
y.append(scaled_data[i + look_back])
X = np.array(X)
y = np.array(y)
# 划分训练集和测试集
train_size = int(len(X) * 0.8)
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]
# 构建模型
model = Sequential()
model.add(LSTM(50, input_shape=(look_back, X_train.shape[2])))
model.add(Dropout(0.2))
model.add(Dense(1))
model.compile(loss='mse', optimizer='adam')
# 拟合模型
history = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_data=(X_test, y_test), verbose=2)
# 可视化训练过程
plt.plot(history.history['loss'], label='Train Loss')
plt.plot(history.history['val_loss'], label='Test Loss')
plt.legend()
plt.show()
# 预测结果
train_predict = model.predict(X_train)
test_predict = model.predict(X_test)
# 反归一化
train_predict = scaler.inverse_transform(train_predict)
y_train = scaler.inverse_transform(y_train)
test_predict = scaler.inverse_transform(test_predict)
y_test = scaler.inverse_transform(y_test)
# 可视化预测结果
plt.plot(y_train, label='Actual')
plt.plot(train_predict, label='Train Predict')
plt.plot(range(train_size, len(df)), y_test, label='Actual (Test)')
plt.plot(range(train_size, len(df)), test_predict, label='Test Predict')
plt.legend()
plt.show()
```