sklearn的ParameterSampler中的random_state参数有啥作用?
Posted
技术标签:
【中文标题】sklearn的ParameterSampler中的random_state参数有啥作用?【英文标题】:What does the random_state parameter do in sklearn's ParameterSampler?sklearn的ParameterSampler中的random_state参数有什么作用? 【发布时间】:2017-12-18 18:44:44 【问题描述】:我正在尝试实现 sklearn 的 ParameterSampler,但我不完全确定 random_state
参数的作用。
我的猜测是,如果将random_state
设置为None
,则使用正常随机抽样。如果random_state
不是None
,那么使用伪随机抽样?
我也不确定不同的 int 值对采样有何影响。例如,random_state = 1
是否与 random_state = 2
不同?如果是,怎么做?
【问题讨论】:
【参考方案1】:来自documentation:
如果
random_state
是None
或np.random
,则返回一个随机初始化的RandomState
对象。如果
random_state
是一个整数,则它用于为新的RandomState
对象播种。如果
random_state
是RandomState
对象,则它被传递。
基本上,通过设置random_state
,您可以保证(伪)随机数生成器每次生成相同的随机整数序列,这反过来会影响您的数据采样方式。
【讨论】:
【参考方案2】:random_state
不影响分发。它是一个使您能够获得一致结果的参数。如果将其设置为 1,则每次运行代码都会得到相同的结果。如果将其设置为 2,也会发生这种情况(但可能使用与以前不同的值)。如果您将其设置为 None(默认),则每次选择随机种子时,您都会得到不同的结果。
【讨论】:
【参考方案3】:sklearn 中的这个 random_state 参数为函数的内部随机数生成器提供了一个种子值。 如果我们为该种子值选择不同的值,则会导致训练和测试的随机拆分不同。所以,如果我们想每次都得到相同的训练和测试分割,我们需要确保传入相同的随机状态参数值。所以它类似于 random.seed() 代码。
【讨论】:
以上是关于sklearn的ParameterSampler中的random_state参数有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章
sklearn中决策树算法DesiciontTreeClassifier()调用以及sklearn自带的数据包sklearn.datasets.load_iris()的应用