使用 sklearn LabelEncoder 将标签绑定到给定的编码

bind a label to a given encoding with sklearn LabelEncoder

from sklearn.preprocessing import LabelEncoder
l_labels = ['[PAD]'] + ['NN', 'ADJ', 'PRON'] 
le = LabelEncoder()
le.fit(l_labels)
le.trasform('[PAD]')

>>>> 3

我希望“[PAD]”的编码为 0。是否可以使用 LabelEncoder 将标签绑定到编码?

不,你不能在 LabelEncoder 中这样做,因为它首先找到唯一元素,然后对它们进行排序以分配数字编码。

fit 方法内部发生了什么。

uniques_set = set(values)
uniques_set, missing_values = _extract_missing(uniques_set)

uniques = sorted(uniques_set)

参考:https://github.com/scikit-learn/scikit-learn/blob/0d378913be6d7e485b792ea36e9268be31ed52d0/sklearn/utils/_encode.py#L135

scikit learn LabelEncodersorting 转换前元素列表的一种编码方式 'PAD' 为 0是将 PAD 的名称更改为将排在第一位的名称。

l_labels = ['0' + 'PAD'] + ['NN', 'ADJ', 'PRON'] 
le = LabelEncoder()
le.fit(l_labels)
le.transform(['0'+'PAD'])
>> [0]