我想知道Sklearn的RFECV是否可以选择固定数量的最重要功能。例如,在处理具有617个要素的数据集时,我一直试图使用RFECV来查看其中哪些要素中最重要的5个。但是,RFECV不像RFE(使我感到困惑)不具有参数“ n_features_to_select”。我该如何处理?

最佳答案

根据此quora post


  RFECV对象有助于使用交叉验证来调整或找到此n_features参数。对于消除了“步骤”数量的特征的每个步骤,它都会根据验证数据计算分数。在验证数据上给出最高分的步骤中剩余的要素数量被认为是数据的“最佳n_features”。


也就是说,RFECV确定最佳特征数(n_features)以获得最佳结果。
拟合的RFECV对象包含具有特征排名的属性ranking_和用于选择找到的最佳特征的support_掩码。
但是,如果必须从RFECV中选择前n_features,则可以使用ranking_属性

optimal_features = X[:, selector.support_] # selector is a RFECV fitted object

n = 6 # to select top 6 features
feature_ranks = selector.ranking_  # selector is a RFECV fitted object
feature_ranks_with_idx = enumerate(feature_ranks)
sorted_ranks_with_idx = sorted(feature_ranks_with_idx, key=lambda x: x[1])
top_n_idx = [idx for idx, rnk in sorted_ranks_with_idx[:n]]

top_n_features = X[:5, top_n_idx]


参考:
sklearn documentationQuora post

07-26 06:39