sklearnStratifiedKFold, KFold的shuffle参数

    xiaoxiao2023-10-07  189

    我一直有一个疑问,这个shuffle参数到底做了什么,会不会打乱样本的顺序,导致我想生成训练集的预测结果后,再拼接到ID上时顺序就对应不上了。

    shuffle = False

    import numpy as np from sklearn.model_selection import KFold a = np.arange(10) kfold = KFold(n_splits=3, shuffle=False, random_state=2000) print(list(kfold.split(a))) print('更改随机种子') kfold = KFold(n_splits=3, shuffle=False, random_state=2018) print(list(kfold.split(a)))

    可以看到更换随机数种子,对split的结果没影响。而且split的结果对应sklearn文档里的说明: Provides train/test indices to split data in train/test sets. Split dataset into k consecutive folds (without shuffling by default).

    shuffle = True

    import numpy as np from sklearn.model_selection import KFold a = np.arange(10) kfold = KFold(n_splits=3, shuffle=True, random_state=2000) print(list(kfold.split(a))) print('更改随机种子') kfold = KFold(n_splits=3, shuffle=True, random_state=2018) print(list(kfold.split(a)))

    这时可以看到随机种子会影响结果,并且split后的index不再是连续的,而且随机的有间断的数。

    那么对于开始的问题, shuffle不会打乱样本顺序,因为它返回的只是index。一般情况下还是应该用shuffle的。

    最新回复(0)