Python 可以在2D列表上应用sklearn.preprocessing.LabelEncoder()吗?

Python 可以在2D列表上应用sklearn.preprocessing.LabelEncoder()吗?,python,label-encoding,Python,Label Encoding,假设我有一个列表,如下所示: l = [ ['PER', 'O', 'O', 'GEO'], ['ORG', 'O', 'O', 'O'], ['O', 'O', 'O', 'GEO'], ['O', 'O', 'PER', 'O'] ] 我想用LabelEncoder()对2D列表进行编码 它应该看起来像: l = [ [1, 0, 0, 2], [3, 0, 0, 0], [0, 0,

假设我有一个列表,如下所示:

l = [
       ['PER', 'O', 'O', 'GEO'],
       ['ORG', 'O', 'O', 'O'],
       ['O', 'O', 'O', 'GEO'],
       ['O', 'O', 'PER', 'O']
    ]
我想用LabelEncoder()对2D列表进行编码

它应该看起来像:

l = [
       [1, 0, 0, 2],
       [3, 0, 0, 0],
       [0, 0, 0, 2],
       [0, 0, 1, 0]
    ]
可能吗? 如果没有,是否有解决办法


提前谢谢

您可以展平列表,用所有潜在值匹配编码器,然后使用编码器变换每个子列表,如下所示:

来自sklearn.preprocessing导入标签编码器
l=[
[PER',O',O',GEO'],
['ORG','O','O','O'],
['O'、'O'、'O'、'GEO'],
['O','O','PER','O']
]
展平的_l=[e表示子列表中的e表示子列表中的e]
#扁平化的l是['PER','O','O','GEO','ORG','O','O','O','O','GEO','O','O','O','PER','O']
le=标签编码器().配合(展平)
#请参见编码器生成的映射:
列表(枚举(类)
#[(0,'GEO'),(1,'O'),(2,'ORG'),(3,'PER')]
#最后,变换每个子列表:
res=[list(le.transform(sublist)),用于l中的子列表]
物件
#获得您想要的结果:
# [[3, 1, 1, 0], [2, 1, 1, 1], [1, 1, 1, 0], [1, 1, 3, 1]]

您的预期输出是什么?问题不清楚。我刚刚更新了问题。谢谢你指出。