我想使用3窗口框架滚动对数据帧执行滚动线性回归,如下所示:
from sklearn.linear_model import LinearRegression
lm1 = LinearRegression()
x = np.asanyarray(df[['YEAR']])
y = np.asanyarray(df[['SALES']])
x_for_year6 = x[2:5] # data shown in red on the screenshot
y_for_year6 = y[2:5] # data shown in red on the screenshot
lm1.fit(x_for_year6 , y_for_year6 ) # Creates trend line
y_hat_year6= lm1.predict(x[5:6]) # Prediction for year 6
我对第一年(第6年)有了预测,但是在预测了第6年之后,我需要使用最后3个数据点(包括刚刚预测的数据点)创建新的回归线并预测下一年。我认为如果使用滚动可以实现,但是我没有成功。
编辑:我尝试使用jorijnsmit推荐的以下代码,
df['SALES'].rolling(3).apply(lm1.predict)
但是出现以下错误:
Reshape your data either using array.reshape(-1, 1)
有没有一种方法可以解决将错误转换为numpy数组的错误?因为我想将其应用于数据框