【发布时间】:2021-10-05 09:17:33
【问题描述】:
我有一个这样的DataFrame:
a b c
0 0 0.326783 1
1 1 0.356272 1
2 2 0.797407 1
3 3 0.098846 1
4 4 0.528812 1
5 5 0.913114 1
6 6 0.630039 2
7 7 0.475828 2
8 8 0.619713 2
9 9 0.756735 2
10 10 0.168544 2
11 11 0.337957 3
12 12 0.201395 3
13 13 0.272564 3
14 14 0.757490 3
15 15 0.032135 4
16 16 0.598143 4
17 17 0.150696 4
18 18 0.001403 4
19 19 0.427624 4
然后,我想在 3 个子组中随机抽样,给定它们的比例(例如[0.5, 0.3, 0.2],但尊重列中标签的比例c
我尝试使用df.groupby('c').sample(frac=...) 进行递归,采样一组,然后采样另一组,等等...
问题是一个组没有得到标签c=3
考虑到子组的给定比例(我上面提到的[0.5, 0.3, 0.2] 列表)以及每个采样子组内标签 c 的比例,最好的方法是什么?
【问题讨论】:
-
这称为(加权)分层分割,例如
sklearn.model_selection.train_test_split()。你用的是sklearn吗?火炬?等等。大多数 ML 包都有分层拆分。