списки sklearn coef_ в виде гребней, РАНСАКА и линейных регрессий

#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 , состоящий из всех переменных из всех моделей, которые я предполагал. Записан ли дополнительный столбец где-то в файле или это то, что я могу определить, только прочитав сценарии?