从标题上看,我想知道
StratifiedKFold参数为shuffle=True
StratifiedKFold(n_splits=10, shuffle=True, random_state=0)
以及
StratifiedShuffleSplit
StratifiedShuffleSplit(n_splits=10, test_size=’default’, train_size=None, random_state=0)
使用StratifiedShuffleSplit有什么好处
Tags:
图示: output examples of KFold, StratifiedKFold, StratifiedShuffleSplit (如何在此窗口中显示此图片?)
上面的图形表示基于Ken Syme的代码:
在Kfold中,即使使用shuffle,每个测试集也不应该重叠。使用KFolds和shuffle,数据在开始时被shuffle一次,然后被分割成所需的分割数。测试数据总是其中的一部分,列车数据是其余部分。
在ShuffleSplit中,数据每次都会被洗牌,然后被分割。这意味着测试集可能在拆分之间重叠。
有关区别的示例,请参见此块。注意ShuffleSplit测试集中元素的重叠。
输出:
至于何时使用它们,我倾向于使用kfold进行交叉验证,我使用ShuffleSplit进行火车/测试集的拆分,拆分为2。但我相信这两种情况都有其他的用例。
@Ken Syme已经有了一个很好的答案。我只是想补充一点。
StratifiedKFold
是KFold
的变体。首先,StratifiedKFold
洗牌数据,然后将数据分成n_splits
部分并完成。 现在,它将使用每个部分作为测试集。注意它只会在拆分前对数据进行一次洗牌。使用
shuffle = True
,数据将被random_state
洗牌。否则, 数据被np.random
(作为默认值)洗牌。 例如,使用n_splits = 4
,数据有3个类(label)用于y
(因变量)。4个测试集覆盖所有数据,没有任何重叠。StratifiedShuffleSplit
是ShuffleSplit
的变体。 首先,StratifiedShuffleSplit
洗牌您的数据,然后它还将数据分成n_splits
部分。但是,还没有完成。在这一步之后,StratifiedShuffleSplit
选择一个部分作为测试集。 然后它重复相同的进程n_splits - 1
其他时间,以获得n_splits - 1
其他测试集。看看下面的图片,数据是一样的,但是这次,4个测试集并没有覆盖所有的数据,即测试集之间有重叠。因此,这里的区别是
StratifiedKFold
只进行一次洗牌和拆分,因此测试集不会重叠,而StratifiedShuffleSplit
在每次拆分前都进行洗牌,并且它会进行n_splits
次拆分,测试集可以重叠。相关问题 更多 >
编程相关推荐