首页 > 解决方案 > MultiLabelBinarizer() 和 inverse_transform()

问题描述

我有多标签标签。标签中的元素意味着投票。以下是标签的外观:

array([[ 4,  0,  0,  1,  3,  2,  0,  0],
       [ 6,  0,  1,  1,  0,  0,  0,  0],
       [ 5,  0,  0,  3,  1,  0,  0,  0],
       [ 4,  0,  0,  4,  1,  0,  0,  0],
       [ 9,  0,  0,  1,  0,  0,  0,  0],
       [ 6,  0,  0,  1,  0,  0,  1,  1],
       [ 2,  0,  0,  8,  0,  0,  0,  0],
       [ 0, 10,  0,  0,  0,  0,  0,  0],
       [ 0, 10,  0,  0,  0,  0,  0,  0],
       [ 0,  0,  6,  0,  0,  0,  4,  0]])

这是我尝试过的:

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
nn = mlb.fit_transform(labels_train)
nn[:10]

输出:

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

当我尝试 inverse_transform() 时:

zet = mlb.inverse_transform(nn)
zet[:10]

出去:

[(0, 1, 2, 3, 4),
 (0, 1, 6),
 (0, 1, 3, 5),
 (0, 1, 4),
 (0, 1, 9),
 (0, 1, 6),
 (0, 2, 8),
 (0, 10),
 (0, 10),
 (0, 4, 6)]

我究竟做错了什么?为什么它以升序显示唯一值?

标签: pythonmachine-learningscikit-learndeep-learningmultilabel-classification

解决方案


推荐阅读