考虑不平衡情况的分层抽样,分为3组

时间:2020-09-30 16:45:54

标签: pandas numpy scikit-learn sklearn-pandas

我调查了Stratified sample in pandasstratified sampling on ranges等,他们没有具体评估我的问题,因为我想将数据随机分为3组。

我有1万行的不平衡数据框,其中10%是肯定类别,90%是否定类别。我正在尝试找出一种将这个数据框分为3个数据集的方法,考虑到不平衡情况,该数据框分别占数据框的60%,20%,20%。但是,此拆分必须是随机且不可替换,这意味着,如果我将3个数据集放在一起,则它必须等于原始数据帧。

通常,我会使用train_test_split(),但只有在您希望将其分为两个而不是三个数据集时,它才有效。

有什么建议吗?

可复制的示例:

df = pd.DataFrame({"target" : np.random.choice([0,0,0,0,0,0,0,0,0,1], size=10000)}, index=range(0,10000,1))

1 个答案:

答案 0 :(得分:1)

两次使用train_test_split()怎么样? 第一次,使用train_size=0.6获得60%的训练集和40%(测试+有效)的集。 第二次,使用train_size=0.5,获得50%* 40%= 20%的验证和20%的测试。 此解决方法对您有效吗?