【问题标题】:How to test new data against a trained model?如何针对经过训练的模型测试新数据?
【发布时间】:2020-12-18 21:06:44
【问题描述】:

我是机器学习的初学者。起初,我的模型给了我 85.82% 的准确率,这很好。但是现在我想再次测试该模型的全部新数据,但我无法弄清楚要在代码中添加什么,因为我只能在使用验证数据测试模型时获得测试准确性。

以下是我的代码:

【问题讨论】:

  • 运行 model.predict(X_new) 其中 X_new 是新数据(就像你对 X_test 所做的那样,这对你的模型/训练来说本质上是“新的”)在不同的说明中,我没有看到85% 的准确率。最高的似乎是 79.87%,在测试集上似乎是 75.35%。
  • 是的,我试过了,但是我需要像处理 X_test 一样处理新数据吗?这次我将如何指定 X_test 是什么?如果你能告诉我一些有用的代码,谢谢,是的,对不起,我写了不同的数字
  • 我猜你是必须显示代码/数据的人;)。您可能必须对数据进行预处理,或者重新排列它们以适应模型。除非有人知道训练数据和新的测试数据,否则我们无能为力。
  • 为了获得更好的响应,您需要分享您的训练数据以及您想要的输出。我建议你阅读如何问好questions

标签: python pandas numpy tensorflow keras


【解决方案1】:

以与创建原始测试集完全相同的方式创建新数据集。这个术语很重要,如果您预处理了训练和验证数据,则必须对这些新数据进行相同的预处理。 另一种方法是将训练数据分成 3 组,训练、验证和测试。您可以按如下方式通过训练测试拆分来做到这一点。

X_train, X_temp, Y_train, Y_temp = train_test_split(X, Y,train_size=.8 random_state = 1)
X_valid, X_test, Y_valid, Y_test = train_test_split(X_temp, Y_temp, train_size=.5, shuffle=False)

这将获取您的输入集,并将其中的 80% 用于训练,10% 用于验证,10% 用于测试。在您的代码中,您所谓的测试集实际上是验证集,因此当您执行 model.evaluate 时,您获得的准确度与验证准确度相同。所以现在在 model.fit 中使 validation_data=(X_valid, Y_valid)。现在您的测试集独立于验证集,因此当您运行 model.evaluate 时,您应该得到与验证准确度有所不同的准确度。

【讨论】:

    猜你喜欢
    • 2018-12-29
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 2020-05-04
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多