在sklearn中使用标签拆分火车和测试集?

时间:2018-07-18 17:08:20

标签: python python-3.x numpy scikit-learn

我有一个扩充的数据集,其中有一个列表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](标签相同)分成相同的子集。

1 个答案:

答案 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]