我正在使用带有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获得所有折叠的真正意义?或者我必须手动提取它? 谢谢
答案 0 :(得分:1)
我还注意到使用来自Scikit-learn的GridSearchCV的这种差异。使用我自己的测试用例,从属性numpy.mean
的平均值{splitX_test_score[i]
)到mean_test_score
和cv_results_
之间的差异可以从第17个小数位显示2倍。 10倍,从小数点后6位有差异。
我认为这个问题可能与浮点精度有关。请问,有人可以解释一下mean_test_score
(使用哪个函数,具有哪个浮点精度)?非常感谢提前。
修改:我在以下主题中阅读了Leena的回答:sikit learn cv grid scores - Unexpected results。差异是由参数iid
引起的。如果设置为False
,那么mean_test_score
将根据折叠的平均值计算。