【问题标题】:Not able to understand how this k-fold validation algorithm works?无法理解这个 k 折验证算法是如何工作的?
【发布时间】:2020-06-17 08:25:16
【问题描述】:
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 个数据集。

【问题讨论】:

    标签: machine-learning deep-learning data-science


    【解决方案1】:

    如果训练集的数量很少,那么从训练集中导出的验证集的数量就会非常少。这将导致验证集的高方差,因此验证分数可能会发生很大变化。因此,我们在这种情况下所做的是将训练数据分成 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 即第 1 折和 202->404 即 202 即最后 2 折进行训练。

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

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 1970-01-01
      • 2023-02-05
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2018-03-12
      • 1970-01-01
      • 2012-01-04
      相关资源
      最近更新 更多