【问题标题】:Scikit Learn Multilabel Classification, Getting back labels from MultiLabelBinarizerScikit 学习多标签分类,从 MultiLabelBinarizer 获取标签
【发布时间】:2017-09-01 10:23:39
【问题描述】:

在多标签分类问题中,我使用 MultiLabelBinarizer 将我的 20 个文本标签转换为零和一的二进制列表。

预测后,我得到了 20 个二进制值的列表,我想输出相应的文本标签。

我只是想知道 MultiLabelBinarizer() 是否提供了返回转换,或者我应该手动进行。

【问题讨论】:

  • 顺便说一下,MultiLabelBinarizer().classes_存储了转换列表中标签的顺序。因此,在 MultiLabelBinarizer().classes_ 中打印与我的预测相对应的索引的 for 循环就足够了,尽管很烦人。

标签: scikit-learn multilabel-classification


【解决方案1】:

是的,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)mlb = MultiLabelBinarizer() 2)y = mlb.fit_transform(labels) 3)print mlb.inverse_transform(clf.predict(test[0]))
  • 是的。没错
  • 当我们使用predict_proba()而不是predict()时如何inverse_transform()
  • @loving_guy inverse_transform() 只能用于原始值(目标)。如果您使用predict_proba,那么您首先需要确定要为该样本分配特定目标类的阈值。为所有值完成此操作后,请使用 inverse_transform()
猜你喜欢
  • 2016-12-06
  • 2015-08-26
  • 2016-03-16
  • 2020-03-09
  • 1970-01-01
  • 2016-10-17
  • 2017-07-21
  • 2021-04-12
  • 2019-09-24
相关资源
最近更新 更多