python - 制作 Keras 模型时将数据拆分为训练、测试和评估

标签 python tensorflow machine-learning keras deep-learning

在制作和评估 Keras 机器学习模型时,我对拆分数据集有点困惑。 假设我有 1000 行的数据集。

features = df.iloc[:,:-1]
results = df.iloc[:,-1]

现在我想将这些数据拆分为训练和测试(33% 的数据用于测试,67% 用于训练):

x_train, X_test, y_train, y_test = train_test_split(features, results, test_size=0.33)

我在网上看到,将数据拟合到模型中应该是这样的:

history = model.fit(features, results, validation_split = 0.2, epochs = 10, batch_size=50)

所以我将完整的数据(特征和结果)拟合到我的模型中,并且我使用该数据的 20% 的数据进行验证:validation_split = 0.2。 所以基本上,我的模型将使用 80% 的数据进行训练,并使用 20% 的数据进行测试。

所以当我需要评估模型时,困惑就开始了:

score = model.evaluate(x_test, y_test, batch_size=50)

这是正确的吗? 我的意思是,我为什么要把数据分成训练和测试,x_train 和 y_train 去哪里?

能否请您向我解释一下创建模型的正确步骤顺序是什么?

最佳答案

一般来说,在训练时间(model.fit),你有两套:一套用于training set,另一套用于validation/tuning/开发集。使用训练集,您可以训练模型,使用验证集,您需要找到最佳的超参数集。完成后,您可以使用未见过的数据集测试您的模型 - 与训练验证集不同的是,该集完全隐藏在模型之外。 p>


现在,当你使用

X_train, X_test, y_train, y_test = train_test_split(features, results, test_size=0.33)

由此,您将特征结果分成33%的数据用于<​​strong>测试,67% 用于训练。现在,您可以做两件事

  1. 使用 (X_testy_test 作为 model.fit(...) 中的验证集。或者,
  2. 将它们用于模型中的最终预测。预测(...)

因此,如果您选择这些测试集作为验证集 (number 1),您将执行以下操作:

model.fit(x=X_train, y=y_trian, 
         validation_data = (X_test, y_test), ...)

在训练日志中,您将获得验证结果以及训练分数。如果您稍后计算 model.evaluate(X_test, y_test),验证结果应该相同。


现在,如果您选择那些测试集作为最终预测或最终评估集(number 2),那么您需要进行验证 新设置或使用 validation_split 参数如下:

model.fit(x=X_train, y=y_trian, 
         validation_split = 0.2, ...)

Keras API 将采用 .2 百分比的训练数据(X_trainy_train)和用它来验证。最后,对于模型的最终评估,您可以执行以下操作:

y_pred = model.predict(x_test, batch_size=50)

现在,您可以将 y_testy_pred 与一些相关指标进行比较。

关于python - 制作 Keras 模型时将数据拆分为训练、测试和评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67161924/

相关文章:

python - 将嵌套对象添加到 Python 中的现有逻辑中

python - 如何使用 pyinstaller 将多个 .py 文件构建为单个可执行文件?

python - 如何将 hparams 与估算器一起使用?

machine-learning - 如何将本地训练的TensorFlow图文件部署到Google Cloud Platform?

python - pandas.merge : match the nearest time stamp >= the series of timestamps

python - 用 python 包装 C++ 代码(手动)

tensorflow - Tensorflow 和 Theano 中图像数据集表示之间的差异

python - TFLearn CovNet 示例导致使用 CIFAR-10 时出现错误

swift - 使用拆分表与完全分离表(CreateML、Swift)时的评估准确度不同

python - 使用 DictVectorizer 转换字符串