如何使用GridSearchCV获得k折叠的实际平均值?

时间:2017-03-09 13:06:14

标签: scikit-learn

我正在使用带有cv = KFold(n_splits = 10)的GridSearchCV,使用一些测试SVM得分='准确度'(c = 1,gamma = 1)。

对于此测试,我仅使用51个值的向量,以及51个二进制响应中的另一个。

我的结果如下:

 'split0_test_score': array([ 0.16666667]), 'split1_test_score': array([ 0.4]), 'split2_test_score': array([ 0.8]), 'split3_test_score': array([ 0.6]), 'split4_test_score': array([ 0.2]), 'split5_test_score': array([ 1.]), 'split6_test_score': array([ 0.2]), 'split7_test_score': array([ 0.]), 'split8_test_score': array([ 0.4]), 'split9_test_score': array([ 0.6]), 

'mean_test_score':array([0.43137255])...

问题是平均分数不是所有倍数测试分数的实际平均分数(应该是0.4367)。有没有办法从GridSearchCV获得所有折叠的真正意义?或者我必须手动提取它? 谢谢

1 个答案:

答案 0 :(得分:1)

我还注意到使用来自Scikit-learn的GridSearchCV的这种差异。使用我自己的测试用例,从属性numpy.mean的平均值{splitX_test_score[i])到mean_test_scorecv_results_之间的差异可以从第17个小数位显示2倍。 10倍,从小数点后6位有差异。 我认为这个问题可能与浮点精度有关。请问,有人可以解释一下mean_test_score(使用哪个函数,具有哪个浮点精度)?非常感谢提前。

修改:我在以下主题中阅读了Leena的回答:sikit learn cv grid scores - Unexpected results。差异是由参数iid引起的。如果设置为False,那么mean_test_score将根据折叠的平均值计算。