在多标签分类问题中,我使用MultiLabelBinarizer将我的20个文本标签转换为零和一个二进制列表。Scikit学习多标签分类,从MultiLabelBinarizer获取标签
预测后,我得到20个二进制值的列表,我想输出相应的文本标签。
我只是想知道MultiLabelBinarizer()是否提供了一个回头转换,或者我应该手动进行。
在多标签分类问题中,我使用MultiLabelBinarizer将我的20个文本标签转换为零和一个二进制列表。Scikit学习多标签分类,从MultiLabelBinarizer获取标签
预测后,我得到20个二进制值的列表,我想输出相应的文本标签。
我只是想知道MultiLabelBinarizer()是否提供了一个回头转换,或者我应该手动进行。
是的,MultiLabelBinarizer提供了一种名为inverse_transform()
的方法,该方法将二元化标签转换回在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)'mlb = MultiLabelBinarizer()' 2)'y = mlb.fit_transform(labels)'3)'print mlb.inverse_transform(clf.predict(test [0]))' – Ale
是的。这是正确的 –
顺便说一句,MultiLabelBinarizer()。classes_存储在转换列表标签的顺序。因此,在我的预测中,与MultiLabelBinarizer()。classes_相对应的for循环打印索引就足够了,虽然很烦人。 – Ale