【问题标题】:Graphing models on the same axis and plot在同一轴上绘制模型并绘图
【发布时间】:2022-01-26 00:20:21
【问题描述】:

我有一个特定天数内开尔文温度的模型。我正在使用“滚动窗口”方法对每 28 天进行一次线性回归建模,以预测未来五天的温度。

现在我有两个图表。我如何将它们“放在一起”,以便 X 轴显示来自整个集合的数据,而不仅仅是给定窗口?结果将有两条曲线,一条是实际温度,一条是预测温度。预测的模型在前 28 天不会显示。

下图显示了两个当前图表。本质上,我希望绘制一个模型,使这些图按顺序彼此相邻出现。我认为这可以在 for 循环中完成,但不确定如何执行。

from sklearn.linear_model import LinearRegression
import matplotlib
import matplotlib.pyplot as plt

reg = LinearRegression().fit(X[0:28], Y[0:28])
reg.score(X, Y)
Y_predict=reg.predict(X[28:33]) #data from days 29-33
plt.plot(Y[28:33],'r')
plt.plot(Y_predict,'b')
print(Y_predict) #temp, days 28-33
reg = LinearRegression().fit(X[29:57], Y[29:57])
Y_predict=reg.predict(X[57:62]) #data from days 29-33
plt.plot(Y[29:57],'r')
plt.plot(Y_predict,'b')
print(Y_predict) #temp, days 28-33

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    要将这些值放在一起,您可以使用 for 循环,同时将所有预测值保存在一个列表中,然后才执行绘图功能。为此,您必须使用循环索引调整 XY 中的固定范围,以及 WINDOW 的大小和要预测的天数 (NEXT_DAYS)。

    WINDOW = 28
    NEXT_DAYS = 5
    
    Y_predict = [None]*WINDOW
    for i in range(0,len(X)-WINDOW, NEXT_DAYS):
        reg = LinearRegression().fit(X[i:i+WINDOW], Y[i:i+WINDOW])
        reg.score(X, Y)
        Y_predict.extend(reg.predict(X[i+WINDOW:i+WINDOW+NEXT_DAYS]))
    
    plt.plot(Y, 'r', label='Y', alpha=0.5)
    plt.plot(Y_predict, 'b', label='Y_pred')
    plt.legend()
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2020-10-09
      • 2019-07-15
      • 1970-01-01
      • 2016-10-09
      • 2016-06-24
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多