Scikit Learn中的交叉验证

时间:2016-01-19 15:37:54

标签: python scikit-learn logistic-regression cross-validation

我一直在使用http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.cross_val_score.html

以交叉验证Logistic回归分类器。我得到的结果是:

[ 0.78571429  0.64285714  0.85714286  0.71428571  
0.78571429  0.64285714    0.84615385  0.53846154  
0.76923077  0.66666667]

我的主要问题是如何找到哪一组/折叠最大化我的分类器得分并产生0.857。

后续问题:用这套训练我的分类器是一个好习惯吗?

提前谢谢。

1 个答案:

答案 0 :(得分:4)

  

我是否以及如何找到哪个集合/折叠最大化我的分类器的分数

cross_val_score的文档中,您可以看到它在特定的cv对象上运行。 (如果你没有明确地给它,那么在某些情况下它会是KFold,在其他情况下会是其他的 - 参考那里的文档。)

您可以迭代此对象(或相同的对象)以查找确切的训练/测试索引。例如:

for tr, te in KFold(10000, 3):
    # tr, te in each iteration correspond to those which gave you the scores you saw.
  

用这套训练我的分类器是否是一种好习惯。

绝对不是!

交叉验证的唯一合法用途是评估整体性能,在不同模型之间进行选择或配置模型参数。

一旦你致力于一个模型,你应该训练整个训练集。将它训练到碰巧得分最高的子集上是完全错误的。