使用 scikit-learn 按顺序排列所有功能

Ranking all features in order using scikit-learn

我正在尝试使用 scikit-learn f_regression and SelectKBest 对所有功能进行排序。如果排名特征的数量 k 小于特征总数 n,则该方法效果很好。但是,如果我设置 k = n 那么 SelectKBest 的输出将与原始特征数组的顺序相同。如何根据重要性对所有功能进行排序?

代码如下:

from sklearn.feature_selection import SelectKBest, f_regression

n = len(training_features.columns)

selector = SelectKBest(f_regression, k = n)
selector.fit(training_features.values, training_targets.values[:, 0])

k_best_features = list(training_features.columns[selector.get_support(indices = True)])

我想根据 f_regression 给出的分数对特征进行排序,可以使用

生成
pd.DataFrame(dict(feature_names= training_features.columns , scores = selector.scores_))\
    .sort_values('scores',ascending = False)

我最终使用了这个解决方案:

import numpy as np
from sklearn.feature_selection import f_regression

k = 10    # number of best features to obtain

scores, _ = f_regression(training_features.values, training_targets.values[:, 0])
indices = np.argsort(scores)[::-1]
k_best_features = list(training_features.columns.values[indices[0:k]])