我正在处理一个文本分类问题,训练效果不错,但我的类别相当不平衡,这妨碍了结果。最大的两个类别比最小的类别大80倍以上,因此有不公平的数量的分类被归为这两个类别。我需要从每个类别中选择n
行(任意大)。我的数据集非常大(10m行,1k个唯一类别)。
假设数据框如下:
data = {
'category':['2','2','2','2','4','4','4','4','4','4','6','6','6'],
'text':['t1','t2','t3','t4','t5','t6','t7','t8','t9','t10','t11','t12','t13']
}
df = pd.DataFrame(data)
如何从每个分类中选择 n
行随机数据?
我尝试使用 np.random.choice
来选择 n
行随机数据,但我无法找到一种获取索引并进行删除的方法。
当 n = 3
时,理想输出结果应该类似于:
>>> df.head(9)
category text
0 2 t3
1 6 t11
2 6 t13
3 4 t6
4 2 t1
5 4 t9
6 4 t8
7 2 t4
8 6 t12