sklearn, Keras, DeepStack - ValueError: multi_class должен быть в ('ovo', 'ovr') - PullRequest
1 голос
/ 25 февраля 2020

Я обучил множество DNN и хочу использовать их в глубоком ансамбле. Код реализован в TF2, но пакет Deepstack также работает с Keras. Код выглядит примерно так:

from deepstack.base import KerasMember
from deepstack.ensemble import DirichletEnsemble

dirichletEnsemble = DirichletEnsemble(N=2000 * ensemble_size)

for net_idx in range(0,ensemble_size):  

   member = KerasMember(name=model_name, keras_model=model,
                         train_batches=(train_images,train_labels), val_batches=(valid_images, valid_labels))

   dirichletEnsemble.add_member(member)

dirichletEnsemble.fit()

, где «модель» - это, по сути, модель Keras, поэтому вам нужно загружать одну модель на каждую l oop (я использую свою собственную реализацию). 'ensemble_size' представляет количество DNN, используемых в ансамбле.

В результате я получаю следующую ошибку

ValueError: multi_class должен быть в ('ovo', 'ovr ')

, который генерируется пакетом sklearn.

ДАЛЬНЕЙШИЕ ДЕТАЛИ: deepstack создает метри c

metric = metrics.roc_auc_score

и затем возвращает его как

return metric(y_t, y_p)

, который затем вызывает sklearn

if multi_class == 'raise':
      raise ValueError("multi_class must be in ('ovo', 'ovr')")

В моем конкретном случае c метки имеют вид y_t

[7 10 18 52 10 13 10 4 7 7 24 26 7 26 13 13]

и y_p

[73 250 250 250 281 281 250 281 281 174 281 250 281 250 250 250]

Как установить multi_class как 'ovo' или ' ОВР?

...