问题:我有一个拥有1,000,000行的大熊猫数据框,连续(浮点)功能列为F, 0和1.在数据中,F的分布高度偏斜。如何从一个连续变量分层的Pandas数据框中分层随机抽样
我想利用从数据帧N行的随机样本(没有替换),之间加权,使得的˚F样品中的直方图将大致均匀(或尽可能接近均匀!) ˚F = 0和˚F = 1
显而易见的解决方案是
_ , sampleDF = train_test_split(bigDF, test_size = N, stratify = bigDF['F'])
但这失败的错误消息,大概是因为train_test_split
仅应该关于离散或分类变量进行分层。
ValueError: The least populated class in y has only 1 member, which is too few. The minimum number of groups for any class cannot be less than 2.
理想情况下,解决方案将是快速和强大的,并作为奖金短。我最终想出了一个解决方案,包括stats.gaussian_kde
来估计密度F,然后将该密度输入到bigDF.sample(weights = 1/density)
,但它涉及大量的手工调整,此外似乎并未实际给出完全均匀的分布。如果没有人有一个好的解决方案,我可能会试图把它写成答案。
有没有人知道一个很好的方法来做到这一点?