如何在train_test_split中选择RandomState?

2024-04-25 04:40:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我了解如何使用随机状态将数据随机分为训练集和测试集。正如预期的那样,我的算法每次修改时都会给出不同的精度。现在我必须在我的大学里提交一份报告,我无法理解在那里提到的最终准确性。我应该选择我得到的最大精度吗?或者我应该用不同的随机状态运行它,然后取它的平均值?还是别的什么?在


Tags: 数据算法状态报告精度大学平均值准确性
2条回答

最好的方法是取平均精度。。。但是 如果您基于特定的数据集分割训练模型以产生最佳分类(可能被认为是过度拟合),那么您可以获得最佳精度。让我详细说明一下:

您可以训练模型进行几次迭代,测试训练集合的精确度会有所不同,但会呈上升趋势(精确度会上升) 你可以训练模型进行多次迭代,只有在迭代精度提高的情况下才可以更新权重,从而构造出最好的模型。。。在

但是您应该注意观察测试集的准确度以避免过度拟合,即当模型能够以非常高的准确度超过训练集,但相对于测试集,准确度非常

在开始时,模型将学习并且(测试训练)精度都将提高,经过大量训练后,训练精度将提高(或保持不变),但测试精度将下降

您可以查看this进一步阅读

我建议您看看k-fold cross validation,我认为这种方法最适合这种情况

就我个人而言,我将random_state设置为一个特定的数字(通常是42),因此,如果我看到程序精度的变化,我就知道这是由数据分割方式引起的而不是。在

然而,这可能导致我的网络过度适应那个特定的分割。一、 我对我的网络进行了优化,使它能很好地适应这种分割,但不一定要在不同的分割上工作。因此,我认为在提交代码时最好使用一个随机种子,这样审阅者就知道您没有过度适应特定的状态。在

要使用sklearn.train_test_split完成此操作,您可以简单地不提供random_state,它将使用np.random随机选择一个。在

相关问题 更多 >