在使用 LSTM(單變數 LSTM)預測未來 1 小時電力負載的回歸任務中,結果可以很容易地繪制如下:
plt.plot(y_ts, label='True Future', color='blue')
plt.plot(y_pred, label='Forecast', color='red')
plt.show()
這是因為y_ts和y_pred都是一維的。現在,假設任務已更改為使用 LSTM 預測未來 6 小時的電力負載。例如,這意味著y_ts并且y_pred現在將在 2D 中,y_ts= (3454, 6)以及y_pred= (3454, 6)如何繪制這種高維陣列的情況?
uj5u.com熱心網友回復:
從根本上說,您的資料只有一個維度,即時間;您擁有的是 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_h{i 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()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/390063.html
標籤:蟒蛇-3.x matplotlib 机器学习 阴谋 回归
