在机器学习中训练模型并预测一些价值

时间:2020-06-25 08:18:15

标签: python machine-learning deep-learning regression knn

我几乎是机器学习的新手。我有一个生物学数据集,例如-

arr = np.stack(your_list)

我正在尝试预测缺少的y值。我为此使用KNN回归。我已经读过,火车测试验证拆分比火车测试拆分然后交叉验证更好。我有一个问题-

  1. 训练模型时,应该排除不知道y的行吗?
  2. 如何使用该验证和测试集进行锻炼?
  3. 训练完模型后,我应该只对不知道y的行进行预测吗?
  4. 使用测试数据集的准确性和错误率是我模型的准确性吗?

我有很多问题。我想通过观看教程来解决这些问题,但无法获得完整的见解。任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

我会尽力回答您的问题

  1. 否,训练模型时,应该告诉您哪个目标值适合固定要素(数据集上的列)。因此,您始终在训练阶段使用目标值y。
  2. 使用交叉验证意味着不会浪费您的测试集(记住您​​只能使用一次!),并且可以提高培训水平,从而避免过度拟合。
  3. 您应该使用测试集测试您训练有素的模型。因此,您实际上可以对测试集(没有目标值)进行预测,然后看到结果。
  4. 测试集(如果使用一次)可为您提供模型的准确性。请注意,在某些情况下准确度毫无意义(*)

最后,训练模型的过程或多或少是这样的:

  1. 将数据集分为80%的训练集和20%的测试集(或70-30,具体取决于您拥有多少数据)
  2. 根据训练集,您可以使用this构建训练集和验证集(这只是一个提示)。 (验证集为10%至15%)
  3. 您使用训练集训练模型,并使用验证集进行验证(非常重要!)。
  4. 舍弃(并保存在测试集上的y列中,并使用训练有素的模型来预测测试集。
  5. 使用它提供的值,您可以计算这些值与上一步中保存的值之间的指标(例如MSE),并查看模型的质量。

请记住,这只是一个准则,但是要复杂得多。您越会发现这件事。

(*)例如,如果使用几乎相同的样本训练模型,并且测试集由99%相似的样本和1%不同的样本组成,则您将获得99%。可以很多,但是没有用,因为该模型只能预测一个类。因此,请务必视您的情况而定。