在运行SelectKBest后选择了一些特征,结果以数组形式返回,由于我的训练集有数千个特征,我不知道这些特征具体是哪些。我希望在测试集中找到并选出这些特征,并删除其余特征。有没有方便的方法来做到这一点?谢谢!
代码如下:
from sklearn.feature_selection import SelectKBest, f_regression
X_opt=SelectKBest(f_regression,k=2000)
X_new=X_opt.fit_transform(df_train_X_mm, train_y)
X_new
结果是:
array([[0. , 0. , 0. , ..., 0. , 0. , 0. ],
[0. , 0. , 0.00688335, ..., 0. , 0. , 0. ],
[0. , 0. , 0. , ..., 0. , 0. , 0. ],
...,
[0. , 0. , 0. , ..., 0. , 0. , 0. ],
[0. , 0. , 0. , ..., 0. , 0. , 0. ],
[0. , 0. , 0.06257587, ..., 0. , 0. , 0. ]])
回答:
你需要的是feature_selection.SelectKBest
的get_support
方法。它返回一个布尔数组,表示某个特征是否被选中(True
)或未被选中(False
)。