时间序列单变量多输出预测python代码
时间: 2024-10-24 10:12:32 浏览: 15
时间序列单变量多输出预测通常涉及到使用Python的数据分析库如pandas、NumPy以及机器学习或深度学习库如TensorFlow或Keras。这里是一个简单的例子,我们将使用LSTM(长短期记忆网络)模型进行多输出预测,假设我们有一个包含两个目标变量的历史数据:
```python
# 导入所需的库
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import LSTM, Dense
from sklearn.preprocessing import MinMaxScaler
# 假设你有名为df的DataFrame,其中包含时间序列数据和目标变量
df = ...
# 数据预处理
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(df)
# 分割数据集为训练集和测试集
train_size = int(len(scaled_data) * 0.8)
test_size = len(scaled_data) - train_size
train, test = scaled_data[0:train_size,:], scaled_data[train_size:len(scaled_data),:]
# 定义输入和输出的形状
input_shape = (train.shape[1], train.shape[2])
output_shape = train.shape[1]
# 创建LSTM模型
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=input_shape))
model.add(LSTM(units=50))
model.add(Dense(output_shape, activation='linear'))
# 编译模型
model.compile(optimizer='adam', loss='mse') # 使用均方误差作为损失函数
# 模型训练
model.fit(train, train, epochs=100, batch_size=1, verbose=0)
# 预测
predicted_multi_output = model.predict(test)
# 将预测结果转换回原始数据范围
multi_output_pred = scaler.inverse_transform(predicted_multi_output)
# 结果展示
print("Multi-output predictions for the testing data:")
for i in range(multi_output_pred.shape[1]):
print(f"Output {i+1}:")
print(multi_output_pred[:,i])
阅读全文