ValueError: ne Peut pas gérer mélange de multilabel-indicateur binaire et

Je suis à l'aide de Keras avec le scikit-learn wrapper. En particulier, je veux utiliser GridSearchCV pour les hyper-paramètres d'optimisation.

C'est un multi-classe de problème, c'est à dire la variable cible peut avoir qu'une seule étiquette choisie sur un ensemble de n classes. Par exemple, la variable cible peut être "Class1', 'Classe 2' ... 'Classn'.

# self._arch creates my model
nn = KerasClassifier(build_fn=self._arch, verbose=0)
clf = GridSearchCV(
  nn,
  param_grid={ ... },
  # I use f1 score macro averaged
  scoring='f1_macro',
  n_jobs=-1)

# self.fX is the data matrix
# self.fy_enc is the target variable encoded with one-hot format
clf.fit(self.fX.values, self.fy_enc.values)

Le problème est que, lorsque le score est calculé lors de la validation croisée, la véritable label pour les échantillons de validation est codé chaude, tandis que la prédiction pour quelque raison s'effondre binaire étiquette (lorsque la variable cible n'a que deux classes). Par exemple, c'est la dernière partie de la trace de la pile:

...........................................................................
/Users/fbrundu/.pyenv/versions/3.6.0/lib/python3.6/site-packages/sklearn/metrics/classification.py in _check_targets(y_true=array([[ 0.,  1.],
       [ 0.,  1.],
       [ 0... 0.,  1.],
       [ 0.,  1.],
       [ 0.,  1.]]), y_pred=array([1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1,...0, 1, 0, 0, 1, 0, 0, 0,
       0, 0, 0, 0, 1, 1]))
     77     if y_type == set(["binary", "multiclass"]):
     78         y_type = set(["multiclass"])
     79
     80     if len(y_type) > 1:
     81         raise ValueError("Can't handle mix of {0} and {1}"
---> 82                          "".format(type_true, type_pred))
        type_true = 'multilabel-indicator'
        type_pred = 'binary'
     83
     84     # We can't have more than one value on y_type => The set is no more needed
     85     y_type = y_type.pop()
     86

ValueError: Can't handle mix of multilabel-indicator and binary

Comment puis-je charger Keras/sklearn de donner en retour des prédictions dans un chaud encodage?

  • Ce qui se passe lorsque vous utilisez fy directement, sans codant les valeurs. Il ne devrait pas être un problème dans la multiclasse. "One-hot" de l'encodage de la cible est seulement nécessaire pour les multi-étiquette problèmes à mon humble avis
InformationsquelleAutor gc5 | 2017-03-22