Как создать фрейм данных с помощью линейной регрессии - PullRequest
0 голосов
/ 30 апреля 2020

Я хотел бы выполнить скользящую линейную регрессию на фрейме данных, используя 3-х оконный фрейм, как показано ниже:

enter image description here

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? Потому что я хотел бы применить его на фрейме данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...