2017-04-06 421 views
1

在多標籤分類問題中,我使用MultiLabelBinarizer將我的20個文本標籤轉換爲零和一個二進制列表。Scikit學習多標籤分類,從MultiLabelBinarizer獲取標籤

預測後,我得到20個二進制值的列表,我想輸出相應的文本標籤。

我只是想知道MultiLabelBinarizer()是否提供了一個回頭轉換,或者我應該手動進行。

+0

順便說一句,MultiLabelBinarizer()。classes_存儲在轉換列表標籤的順序。因此,在我的預測中,與MultiLabelBinarizer()。classes_相對應的for循環打印索引就足夠了,雖然很煩人。 – Ale

回答

3

是的,MultiLabelBinarizer提供了一種名爲inverse_transform()的方法,該方法將二元化標籤轉換回在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)'print mlb.inverse_transform(clf.predict(test [0]))' – Ale

+0

是的。這是正確的 –