如何使用特定的维度数执行多重LabelBinarizer?

2024-04-23 12:00:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有一种方法可以在sklearn中使用特定维度执行MultiLabelBinarizer。例如,我们的代码如下所示:

from sklearn.preprocessing import MultiLabelBinarizer

y = [[2, 3, 4], [2], [0, 1, 3], [0, 1, 2, 3, 4], [0, 1, 2]]

MultiLabelBinarizer().fit_transform(y)

We will get the dimension 5 as the existed numbers are 0,1..,4

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

我的问题是,我们如何获得此数组的具体维数(例如维数6),因此答案应提供:

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

在sklearn或python中的其他方法或模块中有没有一种方法可以轻松处理这种期望的结果,或者我们可以通过自己的算法创建这种数组

对此有任何想法都将不胜感激。谢谢


Tags: the方法代码fromimporttransform数组sklearn
1条回答
网友
1楼 · 发布于 2024-04-23 12:00:01

MultiLabelBinarizer接受一个参数classes,您可以在该参数中指示要查找的类的顺序。提供不在原始数组中的类将添加额外的0项维度:

from sklearn.preprocessing import MultiLabelBinarizer


y = [[2, 3, 4], [2], [0, 1, 3], [0, 1, 2, 3, 4], [0, 1, 2]]

MultiLabelBinarizer(classes=[0, 1, 2, 3, 4, 5]).fit_transform(y)

# output
>>>[[0 0 1 1 1 0]
 [0 0 1 0 0 0]
 [1 1 0 1 0 0]
 [1 1 1 1 1 0]
 [1 1 1 0 0 0]]

请注意,由于该参数实际上是用来指示类的顺序,因此您提供的顺序很重要。此外,当提供的类太少时,未知类将被忽略,并且不会出现在转换的数组中

相关问题 更多 >