mean_validation_score vs. numpy.mean(cv_validation_scores)

时间:2016-05-06 13:42:54

标签: python numpy scikit-learn cross-validation grid-search

我正在使用scikit-learn中的GridSearchCV来比较具有不同超参数设置的几个模型。

根据API documentation,给定一个特定的参数网格,我可以访问其对应的命名元组 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 时,我明确计算平均值时使用的精度所有 cv_validation_scores 通过numpy。

在这方面,我还通过查看grid_search.py​​ Git repo检查了源代码级别发生了什么,但我没有得到答案。

感谢您的帮助!

0 个答案:

没有答案