栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我应该使用“ random.seed”还是“ numpy.random.seed”来控制“ 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-
learn

numpy.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
)。我倾向于将单个全局种子用于脚本,然后基于全局种子为任何并行函数生成新的随机种子。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638165.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号