Python 在交叉值预测输出上评估分类器是否正确?

Python 在交叉值预测输出上评估分类器是否正确?,python,scikit-learn,classification,Python,Scikit Learn,Classification,我有一些分类器。我想用 我过去常常得到预测结果,然后将它们传递给分类报告。 我还使用cross\val\u predict的输出来绘制混淆矩阵 labels = get_labels() #ground truth result = cross_val_predict(classifier, features, labels, cv=KFold(n_splits=10, shuffle=True, random_state=seed)) report = classification_repor

我有一些分类器。我想用

我过去常常得到预测结果,然后将它们传递给
分类报告
。 我还使用
cross\val\u predict
的输出来绘制混淆矩阵

labels = get_labels() #ground truth
result = cross_val_predict(classifier, features, labels, cv=KFold(n_splits=10, shuffle=True, random_state=seed))
report = classification_report(labels, result, digits=3, target_names=['no', 'yes'], output_dict=True)
cm = confusion_matrix(result, labels, [no, yes])
cross\u val\u predict
文档中:

将这些预测传递到评估指标可能不是衡量泛化性能的有效方法。结果可能与交叉验证和交叉验证分数不同,除非所有测试集的大小相同,且度量在样本上分解


那么,这样做是错误的吗?我该怎么做呢?

我想说,您的流程应该是这样的:

  • 列车/测试分离
  • 使用(交叉)验证集进行模型选择
  • 使用整个列车组重新培训您的模型
  • 评估步骤1中的测试分割
  • 如果你没有很多数据,用kProf的训练应该比单一的训练/测试分割更可靠的结果,但是作为一个经验法则,考虑你应该对以前没有使用过的数据集/分割进行评估,即使它只用于模型选择或提前停止。 回到你的问题,

    cross\u val\u predict
    实际上是在
    K
    分割中分割输入数组,并使用所有训练的CV模型预测5个预测分割,然后组合在一起。我认为您可以使用它来获得交叉验证结果的总体概念(例如,如果您想要绘制它们或计算其他指标),但绝对不能评估您的模型