Масса вычислительного класса для нескольких этикеток - PullRequest
0 голосов
/ 25 февраля 2019

Работа в мульти-метке проблема классификации с 13 возможными выходами в моей нейронной сети с Keras, sklearn и т. Д. ...

Каждый вывод может быть массивом [0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0].

У меня есть набор данных по дисбалансу, и япытаясь применить метод compute_class_weight , например:

class_weight = compute_class_weight('balanced', np.unique(Y_train), Y_train)

Когда я пытаюсь запустить свой код, я получаю Unhashable Тип: 'numpy.ndarray':

Traceback (most recent call last):
  File "main.py", line 115, in <module>
    train(dataset, labels)
  File "main.py", line 66, in train
    class_weight = compute_class_weight('balanced', np.unique(Y_train), Y_train)
  File "/home/python-env/env/lib/python3.6/site-packages/sklearn/utils/class_weight.py", line 41, in compute_class_weight
if set(y) - set(classes):
  TypeError: unhashable type: 'numpy.ndarray'

Я знаю, что это потому, что я работаю с массивами, уже пытался добавить некоторые DICT,

то есть:

class_weight_dict = dict(enumerate(np.unique(y_train), class_weight))

Ну, я неНе знаю, что делать, пробовал другие стратегии, но безуспешно ... Есть идеи?

Заранее спасибо!

1 Ответ

0 голосов
/ 13 мая 2019

Это происходит главным образом потому, что ваш Ytrain представляет собой двумерный массив вместо 1D.Попробуйте:

class_weights = class_weight.compute_class_weight('balanced',
                                                 np.unique(np.ravel(y_train,order='C')),
                                                 np.ravel(y_train,order='C'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...