Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在列车试验中选择随机状态?_Python_Pandas_Machine Learning_Scikit Learn_Svm - Fatal编程技术网

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实际上这是我自己选择的一个小项目。这是我所在大学三年级课程的一部分。“但是,如果你根据特定的数据集分割来训练模型,以产生最佳分类(可能被认为是过度拟合),那么你可以获得最佳精度。”。“请详细解释一下。”普拉布吉钦在原始答案中添加了一些解释,希望能有所帮助