我正在使用scikit-learn和numpy,并希望设置全局种子,以便我的工作可重现性。
我应该使用`numpy.random.seed`还是`random.seed` ?从评论中的链接中,我了解到它们是不同的,而且numpy版本不是线程安全的。我想知道具体要使用哪一个来创建用于数据分析的IPython笔记本。一些来自scikit-learn的算法涉及生成随机数,我想确保笔记本在每次运行时显示相同的结果。
我应该使用`numpy.random.seed`还是`random.seed` ?从评论中的链接中,我了解到它们是不同的,而且numpy版本不是线程安全的。我想知道具体要使用哪一个来创建用于数据分析的IPython笔记本。一些来自scikit-learn的算法涉及生成随机数,我想确保笔记本在每次运行时显示相同的结果。
np.random.seed()
不需要导入任何东西,但是如果要使用random.seed()
,则需要导入random
模块。 - ZdaRRandom
对象并设置其种子。请查看 Muhammad Alkarouri 在此问题中的最后一条评论,以获取更安全的解决方法:http://stackoverflow.com/a/3717456/1524913 - jeromejcolor_rnd
并不清楚。如果我运行color_rnd.seed(1234)
,像sklearn.cross_validation.KFold
这样的函数会“知道”使用它而不是它通常使用的任何RNG吗? - shadowtalkerrandom
,那么可能不会如愿以偿。我的观点是,无论何时编写代码,都要避免直接使用random
本身。对于你的情况,我不确定该怎么办,这有点糟糕。也许可以使用一个装饰器,但我认为你可能需要调整函数上下文,但我不能百分之百确定,我需要更深入地研究一下才能确定。 - jeromej