Я хотел бы выполнить скользящую линейную регрессию на фрейме данных, используя 3-х оконный фрейм, как показано ниже:
![enter image description here](https://i.stack.imgur.com/5y2Dz.png)
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? Потому что я хотел бы применить его на фрейме данных