基于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_select
中rfe
的参数作为符合原始整数数据的最佳数量的参数。
.support_
获取功能中的“赢家”; .grid_scores_
获得平均得分序列。
所以我的问题是在哪里放置GridSearchCV?我猜第二种方式“在RFE上做GridSearchCV”是在第5步做GridSearchCV,它将SVM的参数设置为网格中的一个值,使其适合GridSearchCV分割的训练数据,以获得步骤中建议的功能数量4,并用其余的数据进行测试以获得分数。这样的过程在k次完成,平均得分表示网格中该值的良好性,其中k是GridSearchCV中的参数cv
。但是,由于替代训练数据和网格值,所选功能可能会有所不同,如果按照我的猜测进行,则第二种方式不合理。
GridSearchCV实际上如何与RFECV结合使用?