【问题标题】:Get features names from scikit pipelines从 scikit 管道获取功能名称
【发布时间】:2022-11-26 15:52:25
【问题描述】:

我正在研究 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)

虽然上面的代码工作正常并给了我结果,我怎样才能得到创建的多项式特征列表?

或者我如何在数据框中查看它们?

【问题讨论】:

    标签: python machine-learning scikit-learn pipeline feature-extraction


    【解决方案1】:

    您可以使用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)
    

    【讨论】:

      猜你喜欢
      • 2016-05-24
      • 2016-06-23
      • 2015-12-09
      • 2017-07-17
      • 2020-07-11
      • 2018-01-26
      • 1970-01-01
      • 2022-01-13
      • 2016-12-11
      相关资源
      最近更新 更多