You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

StratifiedKFold每次运行循环时拆分结果是否一致?

关于StratifiedKFold划分索引一致性的问题

问题内容

在Logistic Regression任务中使用StratifiedKFold配合网格搜索,初始化代码如下:

skf = StratifiedKFold(n_splits=6, shuffle=True, random_state=SEED)

针对每组参数执行以下循环:

for fold, (trn_idx, test_idx) in enumerate(skf.split(X, y)):

疑问:每次运行该循环时,每个fold对应的trn_idx和test_idx是否完全相同?例如第一次运行时fold0的trn_idx为[1,2,5,7,8]、test_idx为[3,4,6],后续多次运行循环时,fold0的这两个索引是否仍保持一致?

回答

是的,每次运行循环时,每个fold对应的训练/测试索引都会完全一致。

核心原因在于你初始化StratifiedKFold时指定了固定的random_state=SEED:

  • 开启shuffle=True时,数据会先被随机洗牌再划分,而random_state固定了洗牌的随机种子
  • 只要SEED的值不变,每次调用skf.split(X, y)生成的划分逻辑就完全相同,每个fold对应的trn_idx和test_idx自然不会变化

如果没有指定random_state,或者每次运行时SEED的取值不同,那每次生成的索引才会出现差异。

内容的提问来源于stack exchange,提问作者Yana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:06:29