使用scikit-learn的train_test_split
工具时,我想在控制类之间的比例的同时拆分数据。这就是问题所在:
from sklearn.model_selection import train_test_split
from collections import Counter
x_coords = range(100)
labels = ['a']*90 + ['b']*10
x_train, x_test, label_train, label_test = train_test_split(x_coords, labels, test_size=20)
print(Counter(label_test))
给出:'a':18, 'b':2
。另一个随机分组给出了'a':20
。
因此随机选择了20个样本,但忽略了标记。我想控制类之间的比例。我现在手动操作,通过使用train_test_split
将每个类分别分成一个列车和测试集,然后重新组合所有测试和训练集。有没有人知道更优雅,基于sklearn的方式呢?
我看到here可以这样做,以便保持原始数据中各类之间的比率,但我想自己指定比率。