GridSearchCV
和RandomizedSearchCV
的best_estimator_
为
- 仅返回最佳估计量/模型
- 通过一种简单的评分方法找到最佳估计器:准确度、召回率、精确度等
- 仅根据训练集进行评估
我想用来丰富这些限制
- 我自己对评分方法的定义
- 对测试集进行进一步评估,而不是像GridSearchCV那样进行训练。最终,测试集的性能才是最重要的。训练集倾向于在我的网格搜索中提供几乎完美的准确性
我想通过以下方式实现:
- 获取GridSearchCV和RandomizedSearchCV中的个体估计量/模型
- 使用每个估计器/模型,在测试集上进行预测,并使用我定制的分数进行评估
我的问题是:
- 有没有办法从
GridSearchCV
中获取所有单独的模型 - 如果没有,你是怎么想实现和我想要的一样的事情的?最初我想利用现有的
GridSearchCV
,因为它可以自动处理多参数网格、CV和多线程。欢迎为实现类似结果提出任何其他建议
您可以使用XYZSearchCV
中已有的自定义评分方法:有关如何编写自定义评分器的信息,请参阅scoring
参数和文档的用户指南链接。
您可以使用固定的序列/验证分割来评估超参数(请参阅cv
参数(,但这将不如k倍交叉验证稳健。测试集应仅用于对最终模型进行评分;如果你用它来选择超参数,那么你得到的分数将不是对未来表现的无偏估计。
没有简单的方法可以检索GridSearchCV
构建的所有模型。(这通常是很多的模型,保存它们通常是浪费内存。(
CCD_ 10的并行化和参数网格部分出奇地简单;如果需要,可以复制源代码的相关部分,以生成自己的方法。
训练集在我的网格搜索中往往能提供近乎完美的准确性。
这有点令人惊讶,因为搜索的CV
部分意味着模型是根据看不见的数据进行评分的。如果你在测试集上获得了很高的best_score_
,但性能很低,那么我怀疑你的训练集实际上不是一个有代表性的样本,这需要对情况有更细致的理解。