在不循环的情况下获得 sklearn.cross_validation.KFold 中的第一次折叠

Getting the first fold in sklearn.cross_validation.KFold without looping

在 scikit-learn 中创建 K-Folds 交叉验证迭代器时,如何获取第一个折叠?

示例:

import numpy as np
from sklearn.cross_validation import KFold
np.random.seed(seed=1) # for reproducibility

X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([1, 2, 3, 4])
kf = KFold(4, n_folds=2)

我可以使用以下方式获得第一折:

for idx, fold in enumerate(kf): 
    break

print('The fold {0} is {1}'.format(idx, fold))

输出:

The fold 0 is (array([2, 3]), array([0, 1]))

但我想获得第一次折叠而不必进行循环(应该有一些我错过的更简单的方法)。

可以先将KFold对象转为迭代器,然后再使用一次next方法:

>>> next(iter(kf))
(array([2, 3]), array([0, 1]))