如何从含ColumnTransformer与SelectKBest的sklearn Pipeline中提取筛选后特征名
解决方法
你已经拿到了两个核心匹配依据:
- 自定义
get_feature_names函数返回的features列表,严格按照ColumnTransformer的特征输出顺序排列,列表下标和preprocessor.transform(X)返回的特征矩阵列索引完全一一对应 SelectKBest.get_support(indices=True)返回的mask数组,每个元素就是被保留特征在SelectKBest输入矩阵(也就是preprocessor的输出矩阵)中的列索引
直接通过索引匹配即可得到最终选中的转换后特征名,示例代码如下:
# 方法1:列表推导式(适用于features为普通Python列表) selected_features = [features[idx] for idx in mask] # 方法2:numpy索引(写法更简洁) import numpy as np selected_features = np.array(features)[mask]
结果验证
输出len(selected_features)可以看到长度为60,和你设置的SelectKBest(k=60)参数一致,且每个元素都是经过独热编码、标准化等转换后的特征名,符合你的需求。
内容的提问来源于stack exchange,提问作者Maths12
相关产品推荐
相关产品推荐

