我正在使用 scikit-learn 中的 GridSearchCV 来比较几个具有不同超参数设置的模型。
根据API 文档,给定一个特定的参数网格,我可以访问其对应的命名元组grid_scores_,它又具有以下三个属性:
- 参数:参数设置的字典
- mean_validation_score:交叉验证折叠的平均分数
- cv_validation_scores:每个折叠的分数列表
但是,我注意到mean_validation_score的值与我明确计算所有交叉验证分数的平均值时得到的值不完全匹配,执行如下操作:
import numpy as np
explicit_mean_validation_score = np.mean(cv_validation_scores)
两个平均值之间的差异并不大;实际上它在 0.0001 的数量级,因此它最终不应影响最终结果。不过,我很想知道你们中是否有人确切地知道为什么会发生这种情况。
作为一个勇敢的猜测,我会说这必须处理 scikit-learn 内部使用的浮点精度之间的一些差异,当它对mean_validation_score进行赋值时,以及当我通过 numpy显式计算所有cv_validation_scores的平均值时使用的浮点精度。
在这方面,我还通过查看 grid_search.py Git存储库检查了源代码级别发生的情况,但我没有得到答案。
谢谢你的帮助!