决策树分类器,多标签输出

Posted

技术标签:

【中文标题】决策树分类器,多标签输出【英文标题】:Decision tree classifier,multilabel output 【发布时间】:2018-12-31 18:24:47 【问题描述】:

决策树支持多标签分类对吗?我的y 标签是[['brufen','amoxil'],['brufen'],['xanex']] 类型。现在y 标签可以是 sklearn 文档中提到的list of list of labels 类型,那么为什么它会给我未知标签类型的错误?

这个错误的解决方式应该是列表的长度应该是一致的,但是除了一个热编码之外我应该如何处理这个问题呢?

【问题讨论】:

【参考方案1】:

您需要先将标签转换为标签指示符格式。然后您可以将它们与决策树一起使用。

对于转换,您可以使用MultiLabelBinarizer。

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()

y_converted = mlb.fit_transform([['brufen','amoxil'], ['brufen'], ['xanex']])
# Output: array([[1, 1, 0],
#                [0, 1, 0],
#                [0, 0, 1]])

mlb.classes_
# OutPut: array(['amoxil', 'brufen', 'xanex'], dtype=object)

现在在决策树中使用这个y_converted,而不是原来的y

【讨论】:

【参考方案2】:

根据这里的信息:https://scikit-learn.org/stable/modules/multiclass.html#multioutputclassifier

您可以将sklearn.multioutput.MultiOutputClassifier 与决策树一起使用以获得多标签行为。如果我理解正确,它会在内部为每个标签创建一个单独的树。

【讨论】:

以上是关于决策树分类器,多标签输出的主要内容,如果未能解决你的问题,请参考以下文章

如果为真,决策树分类器输出“男性”,如果为假,则输出“男性”?

sklearn决策树算法DecisionTreeClassifier(API)的使用以及决策树代码实例 - 莺尾花分类

使用 Apache Spark 决策树分类器进行多类分类时出错

基于python的决策树能进行多分类吗

决策树分类器 sklearn 中节点的不同颜色表示啥?

完善的决策树分类