如何使用索引编码多标签表示?

时间:2018-06-01 09:38:19

标签: pandas numpy scikit-learn

我想将[[1, 2], [4]]编码为

[[0, 1, 1, 0, 0],
[0, 0, 0, 0, 1]]

sklearn.preprocessing.MultiLabelbinarizer仅提供

[[1, 1, 0],
[0, 0, 1]]

任何人都知道如何使用NumpyPandassklearn内置函数执行此操作?

1 个答案:

答案 0 :(得分:2)

MultilabelBinarizer只会知道你发送的内容。当它只看到3个不同的类时,它将只分配3列。

您需要设置classes参数来设置数据集中预期的类总数(按照列中所需的顺序):

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer(classes=[0,1,2,3,4])
mlb.fit_transform([[1, 2], [4]])

#Output
array([[0, 1, 1, 0, 0],
       [0, 0, 0, 0, 1]])