【问题标题】:bind a label to a given encoding with sklearn LabelEncoder使用 sklearn LabelEncoder 将标签绑定到给定的编码
【发布时间】:2022-01-15 20:35:56
【问题描述】:
from sklearn.preprocessing import LabelEncoder
l_labels = ['[PAD]'] + ['NN', 'ADJ', 'PRON'] 
le = LabelEncoder()
le.fit(l_labels)
le.trasform('[PAD]')

>>>> 3

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

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    scikit learn LabelEncoder排序 转换之前的元素列表 将“PAD”编码为 0 的一种方法是将 PAD 的名称更改为某些东西将被排在第一位。

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

    【讨论】:

      【解决方案2】:

      不,您不能在 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

      【讨论】:

      • 感谢您的回答
      猜你喜欢
      • 2018-12-20
      • 2018-08-02
      • 2020-12-22
      • 2020-07-12
      • 2016-11-20
      • 2013-08-10
      • 1970-01-01
      • 2020-03-04
      • 2021-08-17
      相关资源
      最近更新 更多