交叉验证在学习曲线中是如何工作的?Python学习

2024-05-29 07:06:32 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我的学习曲线是sklearn learning curve SVM。我也在做5倍交叉验证,据我所知,这意味着将你的训练数据分为5部分,对其中4部分进行训练,对最后一部分进行测试

所以我的问题是,因为对于LearningCurve中的每个数据点,训练集的大小是不同的(因为我们想看看随着数据量的增加,模型将如何执行),在这种情况下交叉验证是如何工作的?它是否仍然将整个训练集分成5个相等的部分?或者它将当前的分数训练集分成五个不同的小块,然后计算测试分数?是否有可能获得每个数据点的混淆矩阵?(即真阳性、真阴性等)。基于sklearn学习曲线代码,我还没有看到一种方法可以做到这一点

交叉验证的次数是否与我们在train_sizes = np.linspace(0.1, 1.0, 5)中拆分的训练集的数量有关

train_sizes, train_scores, test_scores, fit_times, _ = learning_curve(estimator,
                                                                      X, y, cv, 
                                                                      n_jobs, scoring, 
                                                                      train_sizes)

谢谢大家!


Tags: 数据模型情况trainsklearn交叉分数learning
1条回答
网友
1楼 · 发布于 2024-05-29 07:06:32

不,它会将训练数据再次拆分为5倍。相反,对于训练折叠的特定组合(例如-折叠1、2、3和4作为训练),它将仅从这4个训练折叠中选取k个数据点(x-ticks)作为训练。测试折叠将作为测试数据使用

如果你看一下代码here,它对你来说会更清晰

for train, test in cv_iter:
     for n_train_samples in train_sizes_abs:
          train_test_proportions.append((train[:n_train_samples], test))

n_train_samples对于您提到的绘图来说,类似于[200,400,...1400]

Does how many folds of cross-validation relate to how many pieces of training set we are splitting in train_sizes = np.linspace(0.1, 1.0, 5)?

我们不能为某个train_sizes指定任何数量的折叠。它只是所有训练数据点的子集

相关问题 更多 >

    热门问题