Ошибка «Ожидаемый массив, полученный массив» при использовании метода оценки MLPClassifier

#python-3.x #scikit-learn

#python-3.x #scikit-learn

Вопрос:

Я хочу обучить и протестировать классификатор MLP, используя библиотеку «sklearn.neural_network» и набор данных mnist. При использовании метода оценки и предоставлении допустимых данных в виде массива возникает эта ошибка: ValueError: ожидаемый массив, подобный массиву (массив или нестроковая последовательность), получен массив (‘B’, [7, 2, 1, 0, 4, 1, 4, 9, 5, 9,0 …

Обучающие наборы данных X и Y имеют одинаковую длину. Не знаю, что проверить, чтобы решить эту проблему. Я использую записную книжку Anaconda / Jupyter.

код:

 clf = MLPClassifier(hidden_layer_sizes=(100, ), activation='relu', 
              solver='adam', alpha=0.0001, batch_size='auto', 
              learning_rate='constant', learning_rate_init=0.001, 
              power_t=0.5, max_iter=200, shuffle=True, random_state=None, 
              tol=0.0001, verbose=False, warm_start=False, momentum=0.9, 
              nesterovs_momentum=True, early_stopping=False, validation_fraction=0.1, 
              beta_1=0.9, beta_2=0.999, epsilon=1e-08, n_iter_no_change=10)

mndata = MNIST('./samples')
mndata.gz = True

images_tr, labels_tr = mndata.load_training()
images_test, labels_test = mndata.load_testing()
clf.fit(images_tr, labels_tr) 

acc = clf.score(images_test, labels_test)
print(acc)
  

ошибка:

 ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-38-c20e564e6239> in <module>
     18 print(len(images_test))
     19 print(len(labels_test))
---> 20 acc = clf.score(images_test, labels_test)
     21 print(acc)

~Anaconda3libsite-packagessklearnbase.py in score(self, X, y, sample_weight)
    288         """
    289         from .metrics import accuracy_score
--> 290         return accuracy_score(y, self.predict(X), sample_weight=sample_weight)
    291 
    292 

~Anaconda3libsite-packagessklearnmetricsclassification.py in accuracy_score(y_true, y_pred, normalize, sample_weight)
    174 
    175     # Compute accuracy for each possible representation
--> 176     y_type, y_true, y_pred = _check_targets(y_true, y_pred)
    177     check_consistent_length(y_true, y_pred, sample_weight)
    178     if y_type.startswith('multilabel'):

~Anaconda3libsite-packagessklearnmetricsclassification.py in _check_targets(y_true, y_pred)
     70     """
     71     check_consistent_length(y_true, y_pred)
---> 72     type_true = type_of_target(y_true)
     73     type_pred = type_of_target(y_pred)
     74 

~Anaconda3libsite-packagessklearnutilsmulticlass.py in type_of_target(y)
    241     if not valid:
    242         raise ValueError('Expected array-like (array or non-string sequence), '
--> 243                          'got %r' % y)
    244 
    245     sparseseries = (y.__class__.__name__ == 'SparseSeries')

ValueError: Expected array-like (array or non-string sequence), got array('B', [7, 2, 1, 0, 4, 1, 4, 9, 5, 9, 0 ...
  

Комментарии:

1. Пожалуйста, укажите ваш точный импорт ; откуда именно MNIST берется?

2. Я использую этот набор данных: yann. lecun.com/exdb/mnist/index.html .