#python #scikit-learn #regression #pickle #coefficients
Вопрос:
Я пытаюсь понять пару файлов pickle и пытаюсь сопоставить входные переменные с соответствующими коэффициентами.
Одна вещь, которую я заметил, заключалась coef_
в том, что в списке всегда на одну точку данных больше, чем в списке входных данных
linearvar = pickle.sensor[0].models['linear'].inputs
linearvardf = pd.DataFrame(data = linearvar, columns = ['linear_variables'])
linearvardf.shape
(857, 1)
linearcoef = pickle.sensor[0].models['linear'].pipeline._final_estimator.coef_
linearcoefdf = pd.DataFrame(data = linearcoef, columns = ['linearcoef'])
linearcoefdf.shape
(858, 1)
Итак, я выяснил, что первая строка coef_
— относится к значению перехвата моей модели линейной регрессии.
Однако та же логика неприменима к другим моделям, например, регрессии хребта и РАНСАКА. Первая строка coef_ в этих моделях не совпадает со значениями перехвата. Во всех случаях, которые я установил fit_intercept = True
. Есть идеи, почему это так?
Комментарии:
1. Я не думаю, что дело в коэффициенте. Если вы используете «Линейную регрессию» из sklearn, коэффициенты должны быть такими же длинными, как и ваши входные данные, а перехват хранится в разделе .перехват_
2. Поскольку это часть конвейера, я думаю, что наиболее вероятный сценарий заключается в том, что ваш конвейер добавляет столбец
3. @StupidWolf Спасибо за ваши сообщения. да, все они являются частью конвейера, и я думаю, что вы правы, думая, что конвейер добавляет столбец. в
pickle.sensor[0].models['linear'].pipeline.named_steps.polynomialfeatures
я вижуn_input_features_
= 857 иn_output_features_
= 858. На верхнем уровне файла pickle есть файлpickle.sensor[0].model_inputs_list
, состоящий из всех переменных из всех моделей, которые я предполагал. Записан ли дополнительный столбец где-то в файле или это то, что я могу определить, только прочитав сценарии?