-2

I have a problem with the following code

This the code

# simulate splitting a dataset of 25 observations into 5 folds
from sklearn.model_selection import KFold
kf = KFold(n_splits=5, random_state=None, shuffle=False)

# print the contents of each training and testing set
print('{} {:^61} {}'.format('Iteration', 
                            'Training set observations', 
                            'Testing set observations'))
for iteration, data in enumerate(kf, start=1):
    print('{:^9} {} {!s:^25}'.format(iteration, data[0], data[1]))

TypeError: 'KFold' object is not iterable

TypeError                                 Traceback (most recent call last)
<ipython-input-21-13995db0f7c7> in <module>()
        5 # print the contents of each training and testing set
        6 print('{} {:^61} {}'.format('Iteration', 'Training set 
observations', 'Testing set observations'))
  ----> 7 for iteration, data in enumerate(kf, start=1):
        8     print('{:^9} {} {!s:^25}'.format(iteration, data[0], data[1]))

TypeError: 'KFold' object is not iterable

1 Answers1

0

There was a parameter "y" (Samples to split in K folds) in the class "cross_validation":

class sklearn.cross_validation.StratifiedKFold(y, n_folds=3, shuffle=False, random_state=None)[source]

This parameter was not enough for me in the class model_selection

# simulate splitting a dataset of 25 observations into 5 folds
from sklearn.model_selection import KFold
kf = KFold(n_splits=5, random_state=None, shuffle=False)
Vec = np.arange(0,26)
# print the contents of each training and testing set
print('{} {:^61} {}'.format('Iteration', 
                            'Training set observations', 
                            'Testing set observations'))
for iteration, data in enumerate(kf.split(Vec), start=1):
   print('{:^9} {} {!s:^25}'.format(iteration, data[0], data[1]))