我有一个扩充的数据集,其中有一个列表label
将原始数据及其扩充分组。 sklearn
中是否有一种类似于train_test_split()
的方法,但可以保证在两个子集中都不会出现相同的标签?我可以想到的一种类似方法是LabelKFold()
。
例如,我有x = [[1,1], [2,2], [3,3], [4,4], [5,5], [6,6]]
,y = [0, 0, 1, 1, 1, 1]
,label = [0, 0, 1, 1, 2, 2]
。
我希望将[1,1]
和[2,2]
(标签相同)分成相同的子集。
答案 0 :(得分:1)
您可以使用GroupKFold
来执行此操作。这是您进行66/33分割的方法。
from sklearn.model_selection import GroupKFold
gkf = GroupKFold(n_splits=3)
train, test = next(gkf.split(X, y, groups=label))
X_train = X[train]
y_train = y[train]
X_test = X[test]
y_test = y[test]