Pandas random_state究竟做了什么?

时间:2017-07-20 10:07:14

标签: python pandas numpy random

我使用以下代码来使用Pandas random_state

randomState = 123
sampleSize = 750
df = pd.read_csv(filePath, delim_whitespace=True)
df_s = df.sample(n=sampleSize, random_state=randomState)

这会生成一个示例数据帧df_s。每次我使用相同的randomState运行代码时,我都会得到相同的样本df_s。当我将值从123更改为12时,样本也会发生变化,因此我想这就是random_state的作用。

我的愚蠢问题:数字变化如何影响样本变化? 我阅读了Pandas documentationNumpy documentation,但无法获得清晰的图片。

非常感谢任何有关示例的直接解释。

1 个答案:

答案 0 :(得分:2)

pandas.DataFrame.sample的文档中所述,random_state参数接受整数(如您的情况)或numpy.random.RandomState,它是Mersenne Twister伪随机的容器数字生成器。

如果将整数传递给它,它将使用它作为伪随机数生成器的seed。顾名思义,生成器不会产生真正的随机性。它有一个内部状态(你可以通过调用np.random.get_state()获得),它是基于种子初始化的。当由相同的种子初始化时,它将重现相同的序列"随机数"。

如果你传递一个RandomState,它将使用这个(已经初始化/播种)RandomState来生成伪随机数。这也允许您通过在初始化RandomState时设置固定种子然后传递此RandomState来获得可重现的结果。实际上你应该更喜欢这个,而不是设置numpys内部RandomState的种子。罗伯特克恩在answer中解释了这个推理及其评论。我们的想法是拥有一个独立的流,通过改变numpys内部RandomState的种子来防止程序的其他部分弄乱你的可重复性。

相关问题