python - 是否需要将数据分成三份;训练、验证和测试?
问题描述
这里描述了测试集、训练集和验证集之间的区别。在大多数关于训练神经网络的文档中,我发现使用了这三个集合,但它们通常是预定义的。
我有一个相对较小的数据集(总共 906 个 3D 图像,分布是平衡的)。我正在使用sklearn.model_selection.train_test_split
函数来拆分训练和测试集中的数据,并在我的模型中使用 X_test 和 y_test 作为验证数据。
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=1)
...
history = AD_model.fit(
X_train,
y_train,
batch_size=batch_size,
epochs=100,
verbose=1,
validation_data=(X_test, y_test))
训练后,我在测试集上评估模型:
test_loss, test_acc = AD_model.evaluate(X_test, y_test, verbose=2)
我见过其他人也是这样处理的,但是由于模型已经看到了这些数据,我不确定这种方法的后果是什么。有人能告诉我使用同一组进行验证和测试的后果是什么吗?而且由于我已经有一个小数据集(导致过度拟合),是否有必要将数据分成 3 组?
解决方案
您可以使用train, validate, test = np.split(df.sample(frac=1), [int(.6*len(df)), int(.8*len(df))])
它为训练、验证和测试集生成 60%、20%、20% 的拆分。
希望对你有帮助 谢谢阅读!!
推荐阅读
- data-structures - 我们如何将列表列表转换为地图?(灵药)
- full-text-search - 需要在字符串标签中搜索“like”时如何设置 CosmosDB
- javascript - 在 redux-saga 调用调用的函数中对“this”的引用为空
- r - R 编程中的 For 循环和 If
- jquery - 将表单 onsubmit 参数与 jquery 提交事件处理程序相结合
- theos - 如何在应用程序中显示我的调整首选项包?
- xamarin.forms - Xamarin Forms CollectionView 命令不起作用
- python - 导入标识符的未解析引用,稍后重写
- apache - htaccess - 当多个域指向同一服务器时,需要将一个非 https 域重定向到 https
- javascript - 如何使用 Javascript 对 HTML 表单中的结果进行排名?