train_test_split中的分层参数与StratifiedShuffleSplit有何区别?

5
在sklearn的train_test_split函数中使用stratify参数和StratifiedShuffleSplit函数有什么区别?它们不是做同样的事情吗?
1个回答

4
这两个模块执行不同的操作。
正如其名称所示,train_test_split 用于将数据拆分为单个训练和测试子集,并且 stratify 参数允许以分层方式进行拆分。
另一方面,StratifiedShuffleSplit 提供了交叉验证的拆分;来自 docs
引用: “分层随机洗牌交叉验证器” “提供训练/测试索引以将数据分割为训练/测试。”
请注意的复数形式(强调我的)。
因此,当我们想要确保 CV 拆分是分层的时,应该使用 StratifiedShuffleSplit 而不是 KFold,而不是替换 train_test_split

如果您在StratifiedShuffleSplit中将n_splits=1设置为1,那么如果使用相同的random_state,我期望得到与stratifytrain_test_split相同的结果,但我得到了不同的结果。有什么想法吗? - LazyEval
@LazyEval 不可以;请在新问题中提问。 - desertnaut
你有试过确保所有的参数都是一样的吗?比如 test_size / train_size 也是一样的吗?因为从技术上讲,使用 random_state 应该会返回相同的值。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接