使用Sklearn的RFECV(带交叉验证的递归特征消除)选择特定数量的特征

我想知道是否可以使用Sklearn的RFECV来选择固定数量的最重要特征。例如,在处理一个包含617个特征的数据集时,我试图使用RFECV来查看这5个特征中哪些是最重要的。然而,与RFE不同的是,RFECV没有’n_features_to_select’参数,这让我感到困惑。我应该如何处理这个问题?


回答:

根据这个Quora帖子

RFECV对象通过交叉验证来调整或寻找这个n_features参数。在每次消除“step”数量的特征时,它会在验证数据上计算得分。在验证数据上得分最高的那一步剩余的特征数量,被认为是“最佳n_features”。

这表明RFECV决定了最佳的特征数量(n_features)以获得最佳结果。
拟合后的RFECV对象包含一个ranking_属性,用于特征排名,以及一个support_掩码来选择找到的最优特征。
但是,如果你必须从RFECV中选择前n_features,你可以使用ranking_属性

optimal_features = X[:, selector.support_] # selector是一个拟合后的RFECV对象n = 6 # 选择前6个特征feature_ranks = selector.ranking_  # selector是一个拟合后的RFECV对象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文档Quora帖子

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注