当前位置: 首页 > 面试题库 >

我应该使用“ random.seed”还是“ numpy.random.seed”来控制“ scikit-learn”中的随机数生成?

金毅
2023-03-14
问题内容

我正在使用scikit-learn和numpy,并且想要设置全局种子,以便我的工作可重复。

我应该使用numpy.random.seed还是random.seed

编辑:
从评论中的链接,我知道它们是不同的,并且numpy版本不是线程安全的。我想特别知道要使用哪个创建IPython笔记本进行数据分析。scikit-
learn的某些算法涉及生成随机数,我想确保笔记本在每次运行时都显示相同的结果。


问题答案:

我应该使用np.random.seed还是random.seed?

这取决于在代码中使用的是numpy的随机数生成器还是in中的一个random

随机数生成器中numpy.random,并random具有完全独立的内部状态,所以numpy.random.seed()不会影响所产生的随机序列random.random(),同样random.seed()不会影响numpy.random.randn()如果你同时使用等random,并numpy.random在你的代码,那么你就需要分别设置两个种子。

更新资料

您的问题似乎专门针对scikit-learn的随机数生成器。据我所知,scikit-
learnnumpy.random始终使用,所以您应该使用np.random.seed()而不是random.seed()

一个重要的警告是np.random不是线程安全的-
如果设置全局种子,然后启动多个子进程并使用生成随机数np.random,则每个子进程将从其父级继承RNG状态,这意味着您将在每个子进程中获得相同的随机变量。解决此问题的常用方法是将不同的种子(或numpy.random.Random实例)传递给每个子进程,以使每个子进程都有一个单独的本地RNG状态。

由于scikit-
learn的某些部分可以使用joblib并行运行,因此您将看到某些类和函数可以选择传递种子或np.random.RandomState实例(例如,将random_state=参数传递给sklearn.decomposition.MiniBatchSparsePCA)。我倾向于将单个全局种子用于脚本,然后基于全局种子为任何并行函数生成新的随机种子。



 类似资料:
  • 问题内容: 应该使用这两种方法中的哪一种来编码URL? 问题答案: 这取决于您实际想要做什么。 encodeURI假定输入是一个完整的URI,其中可能包含一些需要编码的字符。 encodeURIComponent将对具有特殊含义的所有内容进行编码,因此可以将其用于URI的组件,例如

  • 问题内容: 我正在使用c / c 为osx和linux开发命令行界面可执行文件。该项目将链接到opencv。我应该使用libc 还是libstdc ++? 问题答案: 我会为每个操作系统使用本机库,即GNU / Linux上的libstdc 和Mac OS X上的libc 。 libc 在GNU / Linux上不是100%完整的,而libstdc 更完整时使用libc并没有真正的优势。另外,如果

  • 问题内容: 和CSS 和有什么不一样?我应该使用哪一个?为什么? 问题答案: 所有这些答案似乎都是不正确的。与直觉相反,在CSS 中不是pixel 。至少不是在简单的物理意义上。 从W3C,EM,PX,PT,CM,IN…阅读本文,了解如何为CSS发明一个“神奇的”单元。的含义因硬件和分辨率而异。(该文章是最新的,最新更新为2014-10。) 我自己的思考方式: px单位是CSS的魔术单位。它与当前

  • 问题内容: 我正在一个将Angular和Underscore都作为依赖项的项目。 当我需要创建对象的副本时,根据当时的心情,我可以使用或 在我看来,这些方法中的一种可能比另一种更快速/可靠/健壮。 假设已经包含两个库,那么这两个函数中的任何一个是否存在使另一个函数更好或更坏使用的已知问题? 问题答案: 关于您的问题: angular.copy和_.clone是不同的。这不是哪个更好的问题,而是关于

  • 问题内容: 我想从文本文件中读取每一行并将它们存储在ArrayList中(每一行是ArrayList中的一项)。 到目前为止,我知道BufferedInputStream写入缓冲区,并且仅在缓冲区为空时才进行另一次读取,这可以最大程度地减少或至少减少操作系统的操作量。 我正确吗-我说得通吗? 如果以上情况是在任何情况下,任何人都想使用DataInputStream。最后,我应该使用这两个中的哪一个

  • 问题内容: 在numpy中,可以使用切片语法中的’newaxis’对象创建长度为1的轴,例如: 该文档的状态是一个也可以用代替,效果是完全一样的。 有什么理由选择一个?是否有一般偏好或样式指南?我的印象是更受欢迎,可能是因为它更明确。那么,有什么理由允许这样做? 问题答案: 之所以被允许,是因为它仅仅是的别名。 作者之所以选择它,是因为他们需要一个方便的常量并且可用。 至于为什么你应该更喜欢过:主