python,scikit使用LabelShuffleSpli学习奇怪的行为

2024-06-02 16:39:33 发布

您现在位置:Python中文网/ 问答频道 /正文

scikit-learn documentation for LabelShuffleSplit之后,我希望随机分配我的训练/验证批,以确保我正在训练所有可能的数据(例如,对于一个集合)。你知道吗

根据doc,我应该看到如下内容(注意,train/validation set是通过test_size=0.5平均分割的):

>>> from sklearn.cross_validation import LabelShuffleSplit

>>> labels = [1, 1, 2, 2, 3, 3, 4, 4]
>>> slo = LabelShuffleSplit(labels, n_iter=4, test_size=0.5, random_state=0)
>>> for train, test in slo:
>>>     print("%s %s" % (train, test))
...
[0 1 2 3] [4 5 6 7]
[2 3 6 7] [0 1 4 5]
[2 3 4 5] [0 1 6 7]
[4 5 6 7] [0 1 2 3]

但后来我尝试使用labels = [0, 0, 0, 0, 0, 0, 0, 0]返回:

... 
[] [0 1 2 3 4 5 6 7]
[] [0 1 2 3 4 5 6 7]
[] [0 1 2 3 4 5 6 7]
[] [0 1 2 3 4 5 6 7]

(即不是平均分割-所有数据都被简单地放入验证集中?)我知道在这种情况下,将哪些指数放入序列/验证集中并不重要,但我希望仍然是50%:50%的分割???你知道吗


Tags: 数据test内容forsizedoclabelsdocumentation