sklearn的cross_val_score函数需要澄清

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

我对cross_val_score在“留一法”交叉验证(LOOCV)中如何计算每个估计结果感到困惑。

在LOOCV中,对于一个实例,它会使用59个样本进行训练,让我们假设使用决策树分类器(DTC)模型,并预测剩下的一个样本。

那么主要的问题是:它在每个实例中是否都拟合了一个新的模型(即60次不同的拟合)在cross_val_score内部?

如果是这样,事情就变得令人困惑了。

然后我可以得到一个平均准确率(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)

回答:

我不完全明白你想了解什么。

它在每个实例中是否都拟合了一个新的模型(即60次不同的拟合)在cross_val_score内部?

是的,在你的情况下它确实是这样做的。在这种情况下,你有何进一步的问题来帮助澄清你的困惑?

交叉验证的理念是获取你所选择的模型构建过程的性能估计。最终的模型可以(也应该为了最大限度地利用数据)在完整的数据集上构建。然后你可以用它来预测测试数据,并且可以使用你的cross_val_score结果来估计这个模型的性能。请查看我在之前的回答中提供的更详细的回答以及非常有用的链接。

我的回答适用于较大的数据集。可能有与小数据集处理相关的细微差别是我不知道的,但我看不出为什么这种逻辑不适用于这种情况。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注