你能从 sklearn 网格搜索 (GridSearchCV) 中获得所有估计器吗?
Posted
技术标签:
【中文标题】你能从 sklearn 网格搜索 (GridSearchCV) 中获得所有估计器吗?【英文标题】:Can you get all estimators from an sklearn grid search (GridSearchCV)? 【发布时间】:2021-03-29 05:43:59 【问题描述】:我最近使用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
已多次更新,现在答案可能有所不同(我希望如此)。
【问题讨论】:
【参考方案1】:不,除了(可选,但默认情况下)在整个训练集上训练的最后一个模型,您的best_estimator_
之外,没有保存任何测试模型。尤其是当模型存储大量数据(例如 KNN)时,保存所有拟合的估计器将非常消耗内存,并且通常没有多大用处。 (cross_validate
确实有一个参数 return_estimator
,但超参数调谐器没有。如果你有一个令人信服的理由来添加它,它可能不需要太多工作,你可以在 sklearn 上打开一个 GitHub 问题。)
但是,您确实拥有记录所有测试估计器分数的cv_results_
属性。这通常足以用于检查目的。
【讨论】:
以上是关于你能从 sklearn 网格搜索 (GridSearchCV) 中获得所有估计器吗?的主要内容,如果未能解决你的问题,请参考以下文章