我正在尝试对一组数据进行监督机器学习。
我的数据被组织在一个单独的DataFrame中,其中样本作为行,特征作为列。其中一列包含样本所属的类别。
我想将我的数据集分成两半,使得样本在类别之间均匀分布。 是否有一种原生的Pandas方法来实现这个目标,或者我必须遍历每一行,并手动将每个样本分配到训练组或测试组中?
以下是我数据组织方式的一个示例。 char
列指示每行所属的类别。
feature char
0 SimpleCV.Features.Blob.Blob object at (38, 74)... A
1 SimpleCV.Features.Blob.Blob object at (284, 26... A
2 SimpleCV.Features.Blob.Blob object at (87, 123... B
3 SimpleCV.Features.Blob.Blob object at (198, 37... B
4 SimpleCV.Features.Blob.Blob object at (345, 60... C
5 SimpleCV.Features.Blob.Blob object at (139, 92... C
6 SimpleCV.Features.Blob.Blob object at (167, 83... D
7 SimpleCV.Features.Blob.Blob object at (57, 54)... D
8 SimpleCV.Features.Blob.Blob object at (35, 77)... E
9 SimpleCV.Features.Blob.Blob object at (136, 73... E
参考上面的示例,我想得到两个DataFrame,每个DataFrame包含每个
char
类别中一半的样本。在这个示例中,有两个char
类型,因此得到的DataFrame每个将有一个A
行、一个B
行等等...但是,需要注意的是,我的实际数据中每个
char
类别中的行数可以有所不同。非常感谢!
df.sort("char").groupby(np.arange(len(df)) % 2)
的东西。 - DSM