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
1
A
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()
.
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 –
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