Я работаю над проблемой регрессии ML, где я определил конвейер, как показано ниже, на основе онлайн-учебника.
Мой код выглядит следующим образом
pipe1 = Pipeline([('poly', PolynomialFeatures()),
('fit', linear_model.LinearRegression())])
pipe2 = Pipeline([('poly', PolynomialFeatures()),
('fit', linear_model.Lasso())])
pipe3 = Pipeline([('poly', PolynomialFeatures()),
('fit', linear_model.Ridge())])
pipe4 = Pipeline([('poly', PolynomialFeatures()),
('fit', linear_model.TweedieRegressor())])
models3 = {'OLS': pipe1,
'Lasso': GridSearchCV(pipe2,
param_grid=lasso_params).fit(X_train,y_train).best_estimator_ ,
'Ridge': GridSearchCV(pipe3,
param_grid=ridge_params).fit(X_train,y_train).best_estimator_,
'Tweedie':GridSearchCV(pipe4,
param_grid=tweedie_params).fit(X_train,y_train).best_estimator_}
test(models3, df)
Хотя приведенный выше код работал нормально и дал мне результаты, как я могу получить список созданных полиномиальных функций?
Или как я могу просмотреть их в фрейме данных?
Вы можете использовать метод transform
для создания полиномиальной матрицы признаков.
Для этого вам сначала нужно получить доступ к соответствующему шагу в конвейере, который в данном случае находится в 0-м индексе. Вот как вы можете получить массив полиномиальных признаков для pipe2
:
feature_matrix = model3['Lasso'][0].transform(X_train)
Кроме того, если вы хотите сгенерировать DataFrame с именами функций, вы можете сделать это с помощью метода get_feature_names_out
:
feature_names = model['Lasso'][0].get_feature_names_out()
feature_df = pd.DataFrame(feature_matrix, columns=feature_names)
да, вы можете больше узнать об этом в документации scikit-learn: scikit-learn.org/stable/modules/generated/…
nice. Итак, это дает нам все полиномиальные функции, которые были созданы во время конвейера? Постараюсь обновить в ближайшее время