2015-11-24 41 views
0

在scikit-learn中創建K-fold的交叉驗證迭代器時,如何獲得第一個摺疊?在沒有循環的情況下獲得sklearn.cross_validation.KFold的第一個摺疊

實施例:

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])) 

但我想獲得第一折疊,而不必做一個循環(應該有一些更容易的方式,我錯過了)。

回答

1

您可以將KFold對象首先轉換爲一個迭代器,然後一旦next方法使用:

>>> next(iter(kf)) 
(array([2, 3]), array([0, 1])) 
相關問題