You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Scikit-learn Pipeline中获取生成的多项式特征列表?

获取Pipeline生成的多项式特征列表与DataFrame视图

1. 提取训练完成的多项式特征转换器

无论是直接训练的Pipeline,还是GridSearchCV输出的最优模型,都可以通过named_steps属性定位到Pipeline中的PolynomialFeatures组件:

  • 针对普通Pipeline(如你的OLS模型):
    poly_transformer = models3['OLS'].named_steps['poly']
    
  • 针对GridSearchCV得到的模型(如Lasso/Ridge/Tweedie):
    poly_transformer = models3['Lasso'].named_steps['poly']
    

2. 生成特征名称列表

使用get_feature_names_out()方法生成特征名,如果你的X_train是带列名的DataFrame,传入X_train.columns可以得到更直观的特征命名(比如原始特征为x1、x2时,会生成1、x1、x2、x1^2、x1 x2、x2^2这类名称):

# 获取特征名称数组
feature_names = poly_transformer.get_feature_names_out(X_train.columns)
# 打印查看
print(feature_names)

如果X_train是无列名的numpy数组,方法会自动生成x0、x1这类默认名称。

3. 生成多项式特征的DataFrame

用训练好的转换器对X_train做变换,再结合特征名构建DataFrame,方便查看:

import pandas as pd

# 生成多项式特征矩阵
poly_features_matrix = poly_transformer.transform(X_train)
# 转为DataFrame,保留原数据索引
poly_features_df = pd.DataFrame(
    poly_features_matrix,
    columns=feature_names,
    index=X_train.index
)
# 查看前5行
print(poly_features_df.head())

版本兼容提示

如果你的scikit-learn版本低于1.0,get_feature_names_out()方法不存在,可改用已弃用的get_feature_names()方法,但建议优先升级scikit-learn到最新稳定版。

内容的提问来源于stack exchange,提问作者The Great

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:25:30