【发布时间】:2015-09-12 11:08:33
【问题描述】:
我正在使用 scikit-learn 和 numpy,我想设置全局种子,以便我的工作可重现。
我应该使用numpy.random.seed 还是random.seed?
从 cmets 中的链接,我了解到它们是不同的,并且 numpy 版本不是线程安全的。我想具体了解使用哪一个来创建 IPython 笔记本以进行数据分析。 scikit-learn 的一些算法涉及生成随机数,我想确保 notebook 在每次运行时显示相同的结果。
【问题讨论】:
-
使用
np.random.seed()你不需要导入任何东西,但使用random.seed()你需要导入random模块 -
请不要设置全局种子,这是不安全的。您可以创建自己的
Random对象并设置其种子。阅读 Muhammad Alkarouri 在此问题中的最后一条评论,以获得更安全的解决方法:stackoverflow.com/a/3717456/1524913 -
@Leb 感谢您的链接,但目前尚不清楚我应该使用哪一个。我编辑了问题。
-
@JeromeJ 不清楚如何根据该示例使用
color_rnd。如果我运行color_rnd.seed(1234),像sklearn.cross_validation.KFold这样的函数会“知道”使用它而不是它通常使用的任何RNG吗? -
如果他们遗憾地直接依赖
random,他们可能不会。我的观点是,至少在那时。每当您键入代码时,请避免直接使用random本身。我不确定在您的情况下该怎么做,这有点令人沮丧。也许是一个装饰器,但我认为你必须修改函数上下文,但我不能 100% 确定,我必须更深入地了解它才能确定。
标签: python numpy random scikit-learn random-seed