在 GridSearchCV 和 RandomizedSearchCV 中获取单个模型和自定义分数 [重复]
Posted
技术标签:
【中文标题】在 GridSearchCV 和 RandomizedSearchCV 中获取单个模型和自定义分数 [重复]【英文标题】:Get individual models and customized score in GridSearchCV and RandomizedSearchCV [duplicate] 【发布时间】:2020-11-01 23:03:12 【问题描述】:GridSearchCV
和 RandomizedSearchCV
具有 best_estimator_
:
我想用
来丰富这些限制 我自己对评分方法的定义 在测试集上进一步评估,而不是像 GridSearchCV 那样进行训练。最终,重要的是测试集的性能。训练集往往在我的网格搜索上提供几乎完美的准确性。我正在考虑通过以下方式实现它:
在 GridSearchCV 和 RandomizedSearchCV 中获取单独的估计器/模型 对于每个估算器/模型,在测试集上进行预测并使用我的自定义分数进行评估我的问题是:
有没有办法从GridSearchCV
获取所有单独的模型?
如果不是,您有什么想法来实现与我想要的相同的目标?最初我想利用现有的GridSearchCV
,因为它会自动处理多参数网格、CV 和多线程。欢迎任何其他实现类似结果的建议。
【问题讨论】:
链接线程(免责声明:有自己的答案)可以说涵盖了您的第一个问题,这使得第二个问题(“if not”)过时了。 太棒了,谢谢@desertnaut 【参考方案1】:您可以使用 XYZSearchCV
s 中已有的自定义评分方法:请参阅 scoring
参数和文档中指向用户指南的链接,了解如何编写自定义评分器。
您可以使用固定的训练/验证拆分来评估超参数(请参阅cv
参数),但这将不如 k 折交叉验证稳健。应保留测试集以仅对最终模型进行评分;如果您使用它来选择超参数,那么您收到的分数将不会是对未来性能的无偏估计。
没有简单的方法来检索GridSearchCV
构建的所有模型。 (通常会有很多个模型,保存它们通常会浪费内存。)
GridSearchCV
的并行化和参数网格部分出奇的简单;如果需要,您可以将源代码的相关部分复制出来以生成自己的方法。
训练集往往会在我的网格搜索上提供几乎完美的准确性。
这有点令人惊讶,因为搜索中的 CV
部分意味着模型正在根据看不见的数据进行评分。如果你在测试集上得到很高的best_score_
但性能很低,那么我怀疑你的训练集实际上不是一个有代表性的样本,这需要对情况有更细致的了解。
【讨论】:
以上是关于在 GridSearchCV 和 RandomizedSearchCV 中获取单个模型和自定义分数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 GridSearchCV 和 RandomizedSearchCV 中获取单个模型和自定义分数 [重复]
包括 Scaling 和 PCA 作为 GridSearchCV 的参数