Линейная регрессия с рекурсивным устранением признаков привела к нулю и большим коэффициентам -. Это правильно? - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь построить простую модель линейной регрессии с помощью RFE, используя sklearn. Я получил 49 выбранных функций. Когда я проверил коэффициенты, я обнаружил, что некоторые из них очень большие, а другие - нули. Данные представляют собой временные ряды спроса на энергию, и некоторые функции, которые должны влиять на прогнозы, получают нулевые коэффициенты, как показано на графиках. Ценю вашу помощь.

Вот код RFECV:

regr_cv = RFECV(estimator=regr,
         cv=tscv,
         scoring='neg_mean_squared_error',
         verbose=2,
         n_jobs=-1)

и результат подгонки

Pipeline(memory=None, steps=[('onehot', OneHotEncoder(categorical_features=[2, 3, 4], dtype=<class 'numpy.float64'>, handle_unknown='error', n_values='auto', sparse=False)), ('rfecv', RFECV(cv=TimeSeriesSplit(max_train_size=None, n_splits=3),
estimator=LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False), n_jobs=-1, scoring='neg_mean_squared_error', step=1, verbose=2))])

Результаты перекрестной проверки

cv_results = pd.DataFrame.from_dict({'cv_score': 
regr_pipe.named_steps['rfecv'].grid_scores_})
cv_results['mean_squared_error'] = cv_results['cv_score']
plt.figure(figsize=(15, 5))
plt.plot(cv_results.index, cv_results['mean_squared_error'])
plt.xlabel('number of features')
plt.title('CV negative mean squared error')
plt.show()

график результатов перекрестной проверки (извините, Stackoveflow не позволяет мне добавить их сюда)

И, наконец, коэффициенты, отображаемые относительно их соответствующих характеристик

coefs = supported_features.loc[supported_features['supported'], ].copy()
coefs['coefficients'] = regr_pipe.named_steps['rfecv'].estimator_.coef_
coefs.plot.bar('feature', 'coefficients', figsize=(15, 3), legend=False)
plt.show()

характеристики по сравнению с графиком коэффициентов

Большое спасибо

1 Ответ

0 голосов
/ 27 июня 2018

Помимо обработки категориальных переменных данных - благодаря @caseWestern - я получил лучшие результаты, добавив к обучению некоторые функции автокорреляции сигнала энергетических данных с интервалом в один час.

таблица обучающих данных с функциями автокорреляции

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