2017-04-06 10 views
1

マルチラベル分類問題では、MultiLabelBinarizerを使用して、20個のテキストラベルを0と1のバイナリリストに変換します。Scikit Multilabel分類を学ぶ、MultiLabelBinarizerからラベルを取得する

予測後、私は20のバイナリ値のリストを取得し、対応するテキストラベルを出力したいと思います。

私は、MultiLabelBinarizer()が変換を取得しているかどうか、または手動で行うべきかどうかを疑問に思っています。

+0

、MultiLabelBinarizer()。classes_格納変換リストのラベルの順序。ですから、forループでMultiLabelBinarizer()のインデックスを出力することができます。私の予測のものに対応するclasses_は厄介ですが十分です。 – Ale

答えて

3

はい、MultiLabelBinarizerにはinverse_transform()という名前のメソッドがあり、2進化されたラベルを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

素晴らしい。できます。要約すると、1) 'mlb = MultiLabelBinarizer()' 2) 'y = mlb.fit_transform(labels)' 3) 'mlb.inverse_transform(clf.predict(test [0])))' – Ale

+0

を出力します。そのとおりです –

関連する問題