在GridSearchCV和RandomizedSearchCV中获取单个模型和自定义分数



GridSearchCVRandomizedSearchCVbest_estimator_

  • 仅返回最佳估计量/模型
  • 通过一种简单的评分方法找到最佳估计器:准确度、召回率、精确度等
  • 仅根据训练集进行评估

我想用来丰富这些限制

  • 我自己对评分方法的定义
  • 对测试集进行进一步评估,而不是像GridSearchCV那样进行训练。最终,测试集的性能才是最重要的。训练集倾向于在我的网格搜索中提供几乎完美的准确性

我想通过以下方式实现:

  • 获取GridSearchCV和RandomizedSearchCV中的个体估计量/模型
  • 使用每个估计器/模型,在测试集上进行预测,并使用我定制的分数进行评估

我的问题是:

  • 有没有办法从GridSearchCV中获取所有单独的模型
  • 如果没有,你是怎么想实现和我想要的一样的事情的?最初我想利用现有的GridSearchCV,因为它可以自动处理多参数网格、CV和多线程。欢迎为实现类似结果提出任何其他建议

您可以使用XYZSearchCV中已有的自定义评分方法:有关如何编写自定义评分器的信息,请参阅scoring参数和文档的用户指南链接。

您可以使用固定的序列/验证分割来评估超参数(请参阅cv参数(,但这将不如k倍交叉验证稳健。测试集应仅用于对最终模型进行评分;如果你用它来选择超参数,那么你得到的分数将不是对未来表现的无偏估计。

没有简单的方法可以检索GridSearchCV构建的所有模型。(这通常是很多的模型,保存它们通常是浪费内存。(

CCD_ 10的并行化和参数网格部分出奇地简单;如果需要,可以复制源代码的相关部分,以生成自己的方法。


训练集在我的网格搜索中往往能提供近乎完美的准确性。

这有点令人惊讶,因为搜索的CV部分意味着模型是根据看不见的数据进行评分的。如果你在测试集上获得了很高的best_score_,但性能很低,那么我怀疑你的训练集实际上不是一个有代表性的样本,这需要对情况有更细致的理解。

相关内容

  • 没有找到相关文章

最新更新