基于Recursive feature elimination and grid search using scikit-learn,我知道 RFECV 可以与 GridSearchCV 组合以获得更好的模型参数设置,如线性SVM .

如答案所述,有两种方法:

  • “在RFECV上运行GridSearchCV,这将导致数据分成两次折叠(GridSearchCV内部和RFECV内部),但搜索组件数量将是有效的 . ”

  • “仅在RFE上进行GridSearchCV,这将导致数据的单个分割,但是对RFE估计器的参数进行非常低效的扫描 . ”

为了使我的问题清楚,我必须首先澄清RFECV:

  • 将整个数据拆分为n个折叠 .

  • 在每个折叠中,通过仅将训练数据拟合到 rfe 来获取要素等级 .

  • 对排名进行排序并将训练数据拟合到 SVM 并在测试数据上进行测试以进行评分 . 这应该进行m次,每次都有减少的特征数量,其中m是假设 step=1 的特征数量 .

  • 在前一步骤中获得了一系列得分,并且在步骤1~3已经进行了n次之后,这样的序列将在n次折叠中进行最后的平均,得到平均得分序列,表明在 rfe 中要做的最佳特征数量 .

  • 将最佳数量的特征作为 n_features_to_selectrfe 的参数,与原始整数数据一致 .

  • .support_ 获取功能中的"winners"; .grid_scores_ 获得平均得分序列 .

  • 如果我错了请纠正我,谢谢 .

所以我的问题是在哪里放置GridSearchCV?我想第二种方式"do GridSearchCV just on RFE"是在第5步做GridSearchCV,它将SVM的参数设置为网格中的一个值,使其适合由GridSearchCV分割的训练数据,以获得步骤4中建议的功能数量,并使用分数的其余数据 . 这样的过程在k次完成,平均得分表示网格中该值的良好性,其中k是GridSearchCV中的参数 cv . 但是,由于替代训练数据和网格值,所选功能可能会有所不同,如果按照我的猜测完成,则第二种方式不合理 .

GridSearchCV实际上如何与RFECV结合?