Pandas中的random_state到底是做什么用的?

13

我有以下代码,其中我使用了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文档Numpy文档,但无法得到清晰的图片。

任何简单明了的解释和示例将不胜感激。


3
https://dev59.com/B2Ei5IYBdhLWcg3wNqLN - ayhan
1个回答

7
pandas.DataFrame.sample文档所述,random_state参数接受整数(在您的情况下)或numpy.random.RandomState,它是一个Mersenne Twister伪随机数生成器的容器。
如果传递整数,则会将其用作伪随机数生成器的种子。正如名称所示,生成器不会产生真正的随机性。它有一个内部状态(可以通过调用np.random.get_state()获得),该状态基于种子进行初始化。当由相同的种子初始化时,它将再现相同的“随机数”序列。
如果您传递一个RandomState,它将使用此(已初始化/种子化)RandomState生成伪随机数。这也允许您通过在初始化RandomState时设置固定种子,然后传递此RandomState来获得可重复的结果。实际上,您应该优先选择这种方法而不是设置numpys内部RandomState的种子。原因在于Robert Kern在answer中解释的内容和其评论。其想法是拥有一个独立的流,防止程序的其他部分通过更改numpys内部RandomState的种子来干扰您的可重复性。

1
当我们只使用numpypandassklearn来重现结果时,设置np.random.seed()是否足够? - shaik moeed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接