无法理解此 k 折叠验证算法的工作原理?


for i in range(k):
print('processing fold #', i)
val_data = train_data[i * num_val_samples: (i + 1) * num_val_samples]
val_targets = train_targets[i * num_val_samples: (i + 1) * num_val_samples]
partial_train_data = np.concatenate([train_data[:i * num_val_samples],train_data[(i + 1) *num_val_samples:]],axis=0)
partial_train_targets = np.concatenate([train_targets[:i * num_val_samples],train_targets[(i + 1) * num_val_samples:]],axis=0)

我无法理解此代码中的切片部分。
输入数据集train_data的形状为(404,13)
k4train_label有形状(404)
我知道我必须创建一个 4 折验证堆栈,每个堆栈包含 101 个数据集。

如果训练集的数量很少,那么从训练集派生出来的验证集的数量将非常少。这将导致验证集的高方差,因此验证分数可能会发生很大变化。因此,在这种情况下,我们要做的是将训练数据拆分为 k 个分区(通常为 k = 4 或 5(,每个分区包含len(train_data)//k数量的训练样本。我们为 k-1 分区训练模型并评估剩余分区。这是完成k次的。例如,这里总共有 404 个训练样本。我们将创建 k = 4,即四折验证堆栈,其中每个折叠将有 404//k = 10 个训练样本。在第一次迭代中,我们将训练 10->404 即 303 个训练样本,即 4 个折叠中的最后 3 个折叠,并验证第一个折叠或 0->101 即 101 个训练样本。在下一次迭代中,我们将验证第 2 个折叠或 101->202 个训练样本,并训练 0->101 即 101 即第一折叠和 202->404 即 202 即最后 2 个折叠。

我们继续这个 k 次,直到模型对所有 k 折叠进行验证。观看此视频以更好地理解:从 3:30 示例开始 https://www.youtube.com/watch?v=gJo0uNL-5Qw。

最新更新