在不循环的情况下获得 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]))
在 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]))