StratifiedKFold: IndexError: слишком много индексов для массива

используя функцию StratifiedKFold sklearn, может ли кто-нибудь помочь мне понять ошибку здесь?

Я предполагаю, что это имеет какое-то отношение к моему входному массиву меток, я замечаю, когда я печатаю их (первые 16 в этом примере) индексирование идет от 0 до 15, но дополнительный 0 печатается выше, что я не ожидал. Может быть, я просто питон нуб, но это выглядит странно.

кто-нибудь видит здесь дурака?

документация: http://scikit-learn.org...StratifiedKFold.html

код:

import nltk
import sklearn

print('The nltk version is {}.'.format(nltk.__version__))
print('The scikit-learn version is {}.'.format(sklearn.__version__))

print type(skew_gendata_targets.values), skew_gendata_targets.values.shape
print skew_gendata_targets.head(16)

skew_sfold10 = cross_validation.StratifiedKFold(skew_gendata_targets.values, n_folds=10, shuffle=True, random_state=20160121)

результат

The nltk version is 3.1.
The scikit-learn version is 0.17.
<type 'numpy.ndarray'> (500L, 1L)
    0
0   0
1   0
2   0
3   0
4   0
5   0
6   0
7   0
8   0
9   0
10  0
11  0
12  0
13  0
14  1
15  0
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-373-653b6010b806> in <module>()
      8 print skew_gendata_targets.head(16)
      9 
---> 10 skew_sfold10 = cross_validation.StratifiedKFold(skew_gendata_targets.values, n_folds=10, shuffle=True, random_state=20160121)
     11 
     12 #print 'nSkewed Generated Dataset (', len(skew_gendata_data), ')'

d:Program FilesAnaconda2libsite-packagessklearncross_validation.pyc in __init__(self, y, n_folds, shuffle, random_state)
    531         for test_fold_idx, per_label_splits in enumerate(zip(*per_label_cvs)):
    532             for label, (_, test_split) in zip(unique_labels, per_label_splits):
--> 533                 label_test_folds = test_folds[y == label]
    534                 # the test split can be too big because we used
    535                 # KFold(max(c, self.n_folds), self.n_folds) instead of

IndexError: too many indices for array

1 ответов


проверьте форму skew_gendata_targets.values. Вы увидите, что это не массив 1d (shape (500,)), как ожидает StratifiedKFold, а массив (500,1). SKlearn обрабатывает их отдельно, а не принуждать их, чтобы быть таким же. Дайте мне знать, если это помогает