如何获得每个 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 中的 RFECV,来自 grid_scores_ 的分数