Python 如何在列车试验中选择随机状态?
我了解如何使用随机状态将数据随机分割为训练集和测试集。正如预期的那样,我的算法在每次更改时都会给出不同的精度。现在我必须在我的大学提交一份报告,我无法理解其中提到的最终准确性。我应该选择我得到的最大精度吗?或者我应该用不同的随机状态运行它,然后取它的平均值?还是别的什么?最好的方法是采用平均精度。。。但是 如果您根据特定的数据集分割来训练模型,以产生最佳分类(可能被视为过度拟合),那么您可以获得最佳精度。让我详细说明一下: 您可以对模型进行几次迭代训练。测试和训练集的精度将有所不同,但将呈现上升趋势(精度将上升) 您可以对模型进行多次迭代训练,并仅在该迭代的精度提高时更新权重,从而构建最佳模型 但是您应该注意观察测试集的准确性,以避免过度拟合,即当模型可以在训练集上以非常高的准确性进行预测,但在测试集上以非常低的准确性进行预测时 开始时,模型将学习(测试和训练)精度将提高,大量训练后训练精度将提高(或保持不变),但测试精度将下降 你可以看一看,以便进一步阅读Python 如何在列车试验中选择随机状态?,python,pandas,machine-learning,scikit-learn,svm,Python,Pandas,Machine Learning,Scikit Learn,Svm,我了解如何使用随机状态将数据随机分割为训练集和测试集。正如预期的那样,我的算法在每次更改时都会给出不同的精度。现在我必须在我的大学提交一份报告,我无法理解其中提到的最终准确性。我应该选择我得到的最大精度吗?或者我应该用不同的随机状态运行它,然后取它的平均值?还是别的什么?最好的方法是采用平均精度。。。但是 如果您根据特定的数据集分割来训练模型,以产生最佳分类(可能被视为过度拟合),那么您可以获得最佳精度。让我详细说明一下: 您可以对模型进行几次迭代训练。测试和训练集的精度将有所不同,但将呈现上升
我建议你看一看,我认为这种方法最适合这种情况对我个人来说,我将
随机状态
设置为一个特定的数字(通常是42
),所以如果我看到我的程序精度的变化,我知道它不是由数据分割方式引起的
但是,这可能会导致我的网络在该特定分割上过度拟合。也就是说,我调整了我的网络,使其与该拆分很好地工作,但不一定在不同的拆分上工作。因此,我认为在提交代码时最好使用一个随机种子,以便审阅者知道您没有过度适应特定的状态
要使用
sklearn.train\u test\u split
进行此操作,您不能简单地提供random\u state
,它将使用np随机选择一个。random
他们不是在问题或答案的初始部分指定了特定的随机状态吗?最终,您正在构建一个模型,希望它对新的、看不见的数据具有健壮的性能。如果您建立了一个好的模型,那么根据随机状态的不同,精度应该不会有太大的变化。如果你看到了剧烈的波动,那么你的模型就不好。在我看来,报告最大准确性是不好的,因为它不能代表现实世界的预期性能。我的建议是取一些跑步次数的平均值或做k倍CV,但也要报告标准偏差。@MaxU实际上这是我自己选择的一个小项目。这是我所在大学三年级课程的一部分。“但是,如果你根据特定的数据集分割来训练模型,以产生最佳分类(可能被认为是过度拟合),那么你可以获得最佳精度。”。“请详细解释一下。”普拉布吉钦在原始答案中添加了一些解释,希望能有所帮助