Ошибка: установка элемента массива с последовательностью с керасом - PullRequest
0 голосов
/ 24 февраля 2020

Я создаю CNN и получаю эту ошибку при попытке выполнить:

from tensorflow.keras import utils
trainY=utils.to_categorical(trainY)

ValueError: setting an array element with a sequence.

Мой trainY на самом деле метки, и это выглядит так:

labels
array([list(['noise']), list(['noise']), list(['noise', 'point_source']),
       list(['noise']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise']), list(['noise']),
       list(['noise', 'point_source']), list(['noise']),
       list(['noise', 'point_source']), list(['noise', 'point_source']),
       list(['noise']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise']), list(['noise']),

Любой предложения как это исправить? Большое спасибо!

1 Ответ

1 голос
/ 24 февраля 2020

Вы можете сделать это с sklearn.preprocessing.MultiLabelBinarizer

import numpy as np

labels = np.array([list(['noise']), list(['noise']), list(['noise', 'point_source']),
       list(['noise']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise']), list(['noise']),
       list(['noise', 'point_source']), list(['noise']),
       list(['noise', 'point_source']), list(['noise', 'point_source']),
       list(['noise']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise']), list(['noise'])])

Это было то, что вы имели. Теперь вам нужно сделать следующее:

from sklearn.preprocessing import MultiLabelBinarizer

as_list = [list(i) for i in labels]

mlb = MultiLabelBinarizer()
ohe = mlb.fit_transform(as_list) # you might need to add .astype(float)

Вот что вы получите:

array([[1, 0],
       [1, 0],
       [1, 1],
       [1, 0],
       [1, 1],
       [1, 1],
       [1, 1],
       [1, 1], ...
...