【发布时间】:2020-07-27 01:35:38
【问题描述】:
如果我有一个包含 1000 行的数据集,将数据集分成 5 个随机样本(即每个样本将有 200 行)的最佳方法是什么。
我知道有像 model_selection.train_test_split() 和 utils.resample() 这样的函数,但这些函数只将数据集分成 2 个样本。
我是否首先需要生成一个随机数列表,在这种情况下是 1000 个随机数的列表(比如从 1 到 1000),然后将数据集中对应于数字 1 到 200 的索引作为第一个随机样本,201~400作为第二个随机样本,401~600作为第三个随机样本,以此类推
或者我可以使用 Python 中的某个函数(让我的生活更轻松)?
【问题讨论】:
-
scikit-learn.model_selection.KFold应该这样做...scikit-learn.org/stable/modules/generated/…(或者如果你有很大的类不平衡,请查看分层 kfold) -
您的数据集中是否有 标签,您可能需要根据这些标签对子集进行分层,或者只是随机拆分?
-
感谢@Andrew,但
scikit-learn.model_selection.KFold或分层 kfold 会产生折叠,而不是 非重叠样本,这正是我所追求的。 -
KFold可以轻松做到这一点 - 我上面的问题呢?您的数据的形式是什么?熊猫数据框?其他? -
嗨@desertnaut,是的,我的数据集有标签,所以如果有一个也可以进行分层抽样的函数会有所帮助。数据可以是数据框或数组。
标签: python random scikit-learn sampling resampling