决策树支持多标签分类吗?我的y
标签的类型为[['brufen','amoxil'],['brufen'],['xanex']]
。现在y
标签可以是sklearn文档中提到的list of list of labels
类型,那么为什么它给我未知标签类型的错误?
此错误的解决方式是,列表的长度应保持一致,但是除了进行一次热编码之外,我还应该如何处理此问题?
答案 0 :(得分:0)
您需要先将标签转换为标签指示符格式。然后,您可以将它们与决策树一起使用。
要进行转换,可以使用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
。
答案 1 :(得分:0)
基于此处的信息:https://scikit-learn.org/stable/modules/multiclass.html#multioutputclassifier
您可以将 sklearn.multioutput.MultiOutputClassifier
与决策树结合使用以获得多标签行为。如果我理解正确,它的工作原理是在内部为每个标签创建一个单独的树。