如何获得每个 rfecv 分数的特征索引?

Posted

技术标签:

【中文标题】如何获得每个 rfecv 分数的特征索引?【英文标题】:How can I get the index of features for each score of rfecv? 【发布时间】:2021-11-05 18:50:09 【问题描述】:

我正在使用递归特征消除和交叉验证 (rfecv) 来找到特征的最佳准确度得分。 正如我所看到的 _grid_scoresis 估计器在使用第 i 个特征子集进行训练时产生的分数。有什么方法可以获取 _grid_score 中每个分数的子集特征索引? 我可以使用 get_support ( 5 个特征子集) 获得最高分的所选特征的索引。

子集特征,分数

5 , 0.976251

4 , 0.9762072

3 , 0.97322212

如何获取 4 或 3 个特征子集的索引? 我检查了 rfecv.ranking_ 的输出,5 个特征的 rank =1 ,但 Rank= 2 只有一个特征,依此类推。

【问题讨论】:

请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

(可能)从未选择过 3 个(或 4 个)特征的(单个)子集!

这似乎是对RFECV 工作原理的常见误解;见How does cross-validated recursive feature elimination drop features in each iteration (sklearn RFECV)?。每个交叉验证折叠(比如 5 个)都有一个 RFE,每个都会产生自己的一组 3 个特征(可能不同)。不幸的是(至少在这种情况下),那些RFE 对象没有被保存,所以你无法识别每个折叠选择了哪些特征集;只保存分数(来源pt1,pt2)用于选择最佳特征数量,然后在整个数据集上训练另一个RFE,以减少到最终的特征集。

【讨论】:

以上是关于如何获得每个 rfecv 分数的特征索引?的主要内容,如果未能解决你的问题,请参考以下文章

scikit learn(sklearn) 中 RFECV 中的特征如何排名?

与 RFECV 结合时如何在 Gridsearch 中使用“max_features”?

如何在 sklearn 中使用 SVC 运行 RFECV

sklearn 中的 RFECV,来自 grid_scores_ 的分数

使用嵌套在 GridSearchCV 中的 RFECV 时,如何避免使用 estimator_params?

从 gridsearchCV 中的 RFECV 检索选定的特征