使用sklearn进行数据分割时随机状态参数的问题

时间:2017-03-24 13:57:29

标签: python machine-learning scikit-learn train-test-split

当我在sklearn的文档中查找random -state参数时,我发现了这一点:

random_state:int或RandomState     用于随机抽样的伪随机数发生器状态。

我不太清楚它是什么。

不同分类器的准确度显着变化取决于我在随机状态参数上写的数字。这是为什么?我应该设置哪个号码?

这是我第一次参加机器学习项目。

1 个答案:

答案 0 :(得分:3)

设置random_state参数可确保每次运行代码时以完全相同的方式拆分数据。当您想要比较不同模型的准确性(例如,不同的算法或附加特征,或两者)时,这种做法很重要:如果您在测试新方法时以不同的方式改变套牌,您如何知道增加或减少准确性是由于您对模型所做的更改,而不是由于使用稍微不同的列车和测试数据集?

至于选择random_state参数的数量:这取决于您。一些实验使用不同的参数值,并查看模型表现最佳的random_state值。这实际上取决于您的应用:这是您正在开发的生产规模的机器学习模型,还是数据科学挑战的模型?在前一种情况下,它应该不重要。在后一种情况下,我认识的人完全调整他们的模型然后开始尝试不同的random_state参数来提高他们的准确性。我不一定同意这种做法,因为它似乎是另一种过度拟合的形式(见here}。我通常选择100因为这个数字对我来说很有趣 - 它背后真的没有逻辑有些人选择42,其他人1等等。

查看更详细的示例here