您能否从 sklearn 网格搜索 (GridSearchCV) 中获取所有估算器?

Can you get all estimators from an sklearn grid search (GridSearchCV)?

我最近使用 sklearn.model_selection.GridSearchCV 测试了许多超参数组合。我想知道是否有一种方法可以调用在此过程中训练过的所有先前的估算器。

search = GridSearchCV(estimator=my_estimator, param_grid=parameters)
# `my_estimator` is a gradient boosting classifier object
# `parameters` is a dictionary containing all the hyperparameters I want to try

我知道我可以用 search.best_estimator_ 调用最佳估算器,但我也想调用所有其他估算器,以便我可以测试他们的个人性能。

搜索花了大约 35 个小时才完成,所以我真的希望我不必从头再来。

注意:这是几年前提出的问题 (here),但是 sklearn 自那以后已经更新了多次,现在答案可能有所不同(我希望)。

不,none 个测试模型被保存,除了(可选,但默认情况下)在整个训练集上训练的最后一个模型,你的 best_estimator_。特别是当模型存储大量数据(例如 KNN)时,保存所有拟合的估计量将非常耗费内存,而且通常没有多大用处。 (cross_validate 确实有一个参数 return_estimator,但超参数调谐器没有。如果你有一个令人信服的理由添加它,它可能不需要太多工作,你可以打开一个 GitHub 在 sklearn 上发布。)

但是,您确实拥有 cv_results_ 属性,该属性记录了所有经过测试的估算器的分数。这通常足以用于检查目的。