首页 文章

sklearn的cross_val_score函数需要澄清

提问于
浏览
0

我正在使用带有LeaveOneOut函数的cross_val_score函数,因为我的数据有60个样本 .

我很困惑cross_val_score如何计算Leave One Out交叉验证(LOOCV)中每个估算的结果 .

在LOOCV中,例如,它适合,比如决策树分类器(DTC),模型使用59个样本进行训练并预测单个剩余的样本 .

那么主要的问题是:它是否适合cross_val_score中每个实例(即60种不同的拟合)的新模型?

如果是这样,事情会变得混乱 .

然后,我可以获得性能评估的平均准确度(超过60分) . 但我需要提出一个最好的DTC模型,不仅仅是我自己的数据,尽管它是基于我的数据 .

如果我使用整个数据,它完全适合,但该模型只是过度拟合 .

我希望有一个基于我的数据一般最好的DTC模型 .

如果有意义,这是我的代码:

model = DecisionTreeClassifier(random_state=27, criterion='gini', max_depth=4, max_features='auto' )
    loocv = LeaveOneOut()
    results = cross_val_score(model, X, y, cv=loocv)

1 回答

  • 0

    我不完全明白你想知道什么 .

    它是否适合cross_val_score里面每个实例(即60种不同的拟合)的新模型?`

    是的,它适用于您的情况 . 什么是后续问题,以帮助澄清您在这种情况下的混乱?

    CV的想法是获得您选择的模型构建过程的性能估计 . 最终模型可以(并且应该从数据中获益最多) Build 在完整数据集上 . 然后,您可以使用它来预测测试数据,并且可以使用 cross_val_score 结果来估算此模型的性能 . 在my earlier answer中查看更详细的答案以及非常有用的链接 .

    我的答案适用于更大的数据集 . 可能存在与小数据集处理有关的麻烦,我不知道,但我不明白为什么逻辑不会推广到这种情况 .

相关问题