在回归任务中绘制多维真实和预测数组

Posted

技术标签:

【中文标题】在回归任务中绘制多维真实和预测数组【英文标题】:Plotting multi-dimensional true and predicted arrays in a regression task 【发布时间】:2022-01-21 19:29:37 【问题描述】:

在使用 LSTM(单变量 LSTM)预测未来 1 小时电力负载的回归任务中,结果可以很容易地绘制成如下图:

plt.plot(y_ts, label='True Future', color='blue')
plt.plot(y_pred, label='Forecast', color='red')
plt.show()

这是因为y_tsy_pred 都是一维的。现在,假设任务已更改为使用 LSTM 预测未来 6 小时的电力负载。这意味着y_tsy_pred 现在将是二维的,例如y_ts= (3454, 6)y_pred= (3454, 6) 如何绘制这种高维数组的情况?

【问题讨论】:

使用一些维度技术,例如tSNE,将维度减少到 2 并绘制它们。或者您可以使用平行坐标或雷达图。 感谢您的回复。你的意思是对y_predy_ts应用降维? 【参考方案1】:

从根本上说,您的数据中只有一个维度,即时间;你所拥有的是 6 个时间片 - 将它们相互附加,在相同的轴上绘制并分别标记每个小时是有意义的。

让我借助一些捏造的数据来解释这一点:

import numpy as np
from matplotlib import pyplot as plt

np.random.seed(42)

n, h = 3454, 6
y_ts, y_pred = np.random.randn(n, h).cumsum(), np.random.randn(n, h).cumsum()
y_ts = y_ts - np.min(y_ts)
y_pred = y_ts - (y_pred - np.min(y_pred)) / np.max(y_pred) * 0.05 * np.mean(y_ts)
y_ts = y_ts.reshape((n, h), order="F")
y_pred = y_pred.reshape((n, h), order="F")

单独绘制 y_ts(对于 y_pred 也是如此):

for i in range(h):
    plt.plot(y_ts[:, i], label=f'y_ts_hi+1')

plt.legend()
plt.show()

现在,您可以拉直数据并将其绘制为一维序列,如下所示:

y_ts = y_ts.reshape((n*h), order="F")
y_pred = y_pred.reshape((n*h), order="F")
plt.plot(y_ts, label=f'y_ts')
plt.plot(y_pred, label=f'y_pred')

for i in range(h):
    plt.axvline(x=(n*(i+1)), c='m')

plt.xticks([(i+1)*n for i in range(h)], [f'hr_i+1' for i in range(h)])
plt.legend()
plt.show()

【讨论】:

解释得很好!非常感谢。

以上是关于在回归任务中绘制多维真实和预测数组的主要内容,如果未能解决你的问题,请参考以下文章

从逻辑回归绘制预测

spss:得到一个多元线性回归模型之后,如何比较预测值和真实值?如何判断模型是不是有预测能力?

如何在 3-D 等高线图中绘制回归预测数据?

在 R 中使用 lm() 绘制多项式回归的预测时的混乱图

基于R语言的Logistic回归模型构建与Nomogram绘制

如何从真实类和预测类绘制多类 Roc 曲线