使用 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]])
我正在尝试使用 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]])