gpt4 book ai didi

python - 当 random_state 为 None 时,StratifiedShuffleSplit 函数 (scikit-learn) 的结果不同

转载 作者:行者123 更新时间:2023-11-28 21:20:23 24 4
gpt4 key购买 nike

我正在执行交叉验证以正确分类。首先,我使用了 scikit-learn 中的 StratifiedKfold 函数。在某些时候,我想进行更多迭代,因此我更改为 StratifiedShuffleSplit。有了这个新功能,我获得的结果发生了变化。最后,我意识到,如果我指定一个 random_state,我会再次获得与我在 CV 中使用 StratifiedKfold 时获得的结果相似的结果。

总而言之,如果我指定 random_state,对于不同的值,我会得到略有不同的结果,类似于我使用 StratifiedKfold 获得的结果(通过一次迭代,或自己计算洗牌,如 here )。但是,如果 random_state 为 none 或未指定,我获得的结果将完全改变。

我检查了当 random_state 为 None 时,train 和 test 索引不同并且按预期分层。

我没有随机数生成器的经验,但这对我来说没有任何意义

查看代码,我意识到当 random_state 为 None 时,函数 check_random_state 被调用。如果 seed 为 none,则此函数返回 np.random ( link) 使用的 RandomState 单例。

我给你写了一段有问题的代码。如果我将注释行更改为下面的行,我会得到不同的结果。

import numpy as np
import sklearn as skl

(...)
#skCVs=skl.cross_validation.StratifiedShuffleSplit(classes,n_iter=iterations*kfoldCV,test_size = 1/float(kfoldCV),random_state=5)
skCVs=skl.cross_validation.StratifiedShuffleSplit(classes,n_iter=iterations*kfoldCV,test_size = 1/float(kfoldCV))

for train,test in skCVs:

(classification, ...)

我使用的是 sklearn 0.14 版。

您有任何解释或线索可以帮助理解正在发生的事情吗?

最佳答案

(Stratified)ShuffleSplit 在拆分之前随机打乱数据。 (伪)随机性由 random_state 构造函数参数控制。默认的 None 值意味着每次新调用都会产生不同的改组。要获得确定性改组,您可以选择传递整数种子。

关于python - 当 random_state 为 None 时,StratifiedShuffleSplit 函数 (scikit-learn) 的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22842880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com