2017-04-06 1 views
1

Dans un problème de classification multilabel, j'utilise MultiLabelBinarizer pour transformer mes 20 étiquettes de texte en une liste binaire de zéros et de uns. Après la prédiction, j'obtiens ma liste de 20 valeurs binaires, et je voudrais sortir les étiquettes de texte correspondantes. Je me demande simplement si MultiLabelBinarizer() fournit une transformation de retour ou je devrais le faire manuellement.Classification Scikit Learn Multilabel, Récupération d'étiquettes à partir de MultiLabelBinarizer

+0

Par ailleurs, MultiLabelBinarizer(). Magasins classes_, l'ordre des étiquettes dans la liste de conversion. Donc une boucle for pour imprimer des index dans MultiLabelBinarizer(). Classes_ correspondant à celles de ma prédiction est suffisante, bien qu'agace. – Ale

Répondre

3

Oui, MultiLabelBinarizer fournit une méthode nommée inverse_transform() qui convertira les étiquettes binarisées en noms d'origine qui lui ont été fournis pendant fit().

http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MultiLabelBinarizer.html#sklearn.preprocessing.MultiLabelBinarizer.inverse_transform

inverse_transform (yt)

Transform the given indicator matrix into label sets 
Parameters: 

yt : array or sparse matrix of shape (n_samples, n_classes) 

    A matrix containing only 1s ands 0s. 

Returns: 

y : list of tuples 

    The set of labels for each sample such that y[i] consists of classes_[j] for each yt[i, j] == 1. 
+1

Génial. Ça marche. Pour résumer: 1) 'mlb = MultiLabelBinarizer()' 2) 'y = mlb.fit_transform (étiquettes)' 3) 'print mlb.inverse_transform (clf.predict (test [0]))' – Ale

+0

Oui. C'est correct –