提问者:小点点

将多标签的嵌套列表转换为单热表示


我是数据科学和sklearn的新手。

我有一个字符串列表,如下所示:

[
 ['JAVA', 'JAVASCRIPT', 'PYTHON'],
 ['JAVASCRIPT', 'PYTHON', 'NODEJS'], 
 ['JAVASCRIPT', 'JAVA'], 
 ['JAVASCRIPT', 'PYTHON'],  
 ['JAVA']
]

我应该如何将上面的字符串标签转换成数字标签?

我想弄到数字标签,

其中每一个表示一个特定维度的向量,如下所示:

    JAVA PYTHON JAVASCRIPT NODEJS 
1st    1      1          1      0
2nd    0      1          1      1
3rd    1      0          1      0
4th    0      1          1      0
5th    1      0          0      0

然后在余弦相似公式中使用它们。

我被告知sklearn labelEncoder可以用于数字标签的转换,但我不知道怎么做? 非常感谢你的回答。


共1个答案

匿名用户

您可以使用SkLearn的MultilabelBinarizer,它的目的正是在迭代的迭代和多标签格式之间进行转换:

from sklearn.preprocessing import MultiLabelBinarizer

l = [
 ['JAVA', 'JAVASCRIPT', 'PYTHON'],
 ['JAVASCRIPT', 'PYTHON', 'NODEJS'], 
 ['JAVASCRIPT', 'JAVA'], 
 ['JAVASCRIPT', 'PYTHON'],  
 ['JAVA']
]

mlb = MultiLabelBinarizer()
a = mlb.fit_transform(l)
pd.DataFrame(a, columns=mlb.classes_)

   JAVA  JAVASCRIPT  NODEJS  PYTHON
0     1           1       0       1
1     0           1       1       1
2     1           1       0       0
3     0           1       0       1
4     1           0       0       0