В выборке выделите признаки и целевой признак. На них обучите линейную регрессию и сохраните её в переменной model.
Затем напечатайте на экране значения MAE для обучающей и тестовой выборок (уже в прекоде). Подберите аргументы функции make_features() так, чтобы значение MAE на тестовой выборке было не больше 37 000.

Подсказка

Увеличьте количество отстающих значений хотя бы до шести.

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error


data = pd.read_csv('https://code.s3.yandex.net/datasets/energy_consumption.csv', index_col=[0], parse_dates=[0])
data.sort_index(inplace=True)
data = data.resample('1D').sum()

def make_features(data, max_lag, rolling_mean_size):
    data['year'] = data.index.year
    data['month'] = data.index.month
    data['day'] = data.index.day
    data['dayofweek'] = data.index.dayofweek
    
    for lag in range(1, max_lag + 1):
        data['lag_{}'.format(lag)] = data['PJME_MW'].shift(lag)

    data['rolling_mean'] = data['PJME_MW'].shift().rolling(rolling_mean_size).mean()


make_features(data, 1, 6)

train, test = train_test_split(data, shuffle=False, test_size=0.2)
train = train.dropna()

X_train = train.drop(columns='lag_1')
y_train = train['lag_1']
X_test = test.drop(columns='lag_1')
y_test = test['lag_1']

model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

print("MAE обучающей выборки:", mean_absolute_error(y_train, model.predict(X_train)))
print("MAE тестовой выборки:", mean_absolute_error(y_test,y_pred))

Результат

MAE обучающей выборки: 34825.01936510935
MAE тестовой выборки: 35328.60879643042
При прогнозе предыдущего значения ряда MAE на тестовой выборке было 44941. Теперь оно ниже. Модель обучилась лучше!