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

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

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

【问题讨论】:

    标签: python-2.7 scikit-learn


    【解决方案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 与决策树一起使用以获得多标签行为。如果我理解正确,它会在内部为每个标签创建一个单独的树。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-22
        • 2022-12-29
        • 2018-10-20
        • 2020-01-06
        • 2021-06-17
        • 2016-09-06
        • 2017-04-09
        • 2020-04-02
        相关资源
        最近更新 更多