如何创建k折交叉验证测试?

时间:2019-07-13 18:47:03

标签: python machine-learning cross-validation k-fold

我有一个要验证的来自污染传感器的数据。我正在将其与londonair.org.uk的数据进行比较。我使用X轴上的传感器数据和Y轴上的Londonair数据创建了一个简单的线性回归模型,并且能够获得一个简单模型(以y = mx + c的形式)。我的教授要求我使用k倍交叉验证来验证模型,但我不确定如何验证。

我不确定要在哪个数据集上执行测试。应该使用从传感器获取的原始数据还是应该使用通过回归模型计算出的数据?

1 个答案:

答案 0 :(得分:2)

K折叠交叉验证的简介

K折交叉验证将训练数据集分成k个不同的相等部分, 也称为“褶皱”。依次将每一折视为测试集(也 称为“验证集”),而其余的k-1块成为训练集。 该模型通过迭代k-1个块进行训练并测试结果模型 在验证集模块上,在该模块上要测量一些指标,例如精度,标准 偏差等。此过程重复k次,之后所有模型的均值 计算评估结果以确定最终模型评估结果。

总而言之,可以通过以下步骤实现K折交叉验证:

随机播放初始数据集。

  1. 将数据集拆分为k折。
  2. 每折:

    (a)将第一折设置为测试数据集。

    (b)将剩余折痕设置为训练数据集。

    (c)使用训练集来演化模型并使用模型来评估测试 数据集。

    (d)重复k次。

  3. 为k个测试数据集评估计算模型评估的平均值。

您正在验证模型,即,您试图了解模型在原始数据中捕获基础模式和关系的能力如何-因此,用于训练的数据将是原始数据(训练意味着您正在将其输入模型以使其能够学习),而验证数据是您输入到模型中以查看其学习训练数据的程度的数据。 k折交叉验证的基本思想是不要对训练之前已经看到的数据进行测试。

enter image description here

特别是您的案例

您有带有标签的数据,每个实例都是一个“对”:污染数据->伦敦航空数据。假设您有100对唯一的货币对-例如将80个这样的对放入模型中进行训练(如果原始数据污染值为a,londonair标签为b ,则为训练对),其余20个将用于验证-供稿对污染数据进行建模,并检查模型是否返回了与污染数据相对应的londonair数据标签(如果原始数据污染值为a,标签应根据模型是什么? )。重复上面介绍中所述的过程,然后取平均结果,这将反映您的模型准确性。