Scikit LabelEncoder在我的Jupyter笔记本中显示了一些令人费解的行为,如:
from sklearn.preprocessing import LabelEncoder
le2 = LabelEncoder()
le2.fit(['zero', 'one'])
print (le2.inverse_transform([0, 0, 0, 1, 1, 1]))
打印['one' 'one' 'one' 'zero' 'zero' 'zero']
。
这很奇怪,是不是应该打印['zero' 'zero' 'zero' 'one' 'one' 'one']
?然后我试着
le3 = LabelEncoder()
le3.fit(['one', 'zero'])
print (le3.inverse_transform([0, 0, 0, 1, 1, 1]))
它还打印['one' 'one' 'one' 'zero' 'zero' 'zero']
。也许是发生了按字母顺序排列的事情?接下来,我试着
le4 = LabelEncoder()
le4.fit(['nil', 'one'])
print (le4.inverse_transform([0, 0, 0, 1, 1, 1]))
打印['nil' 'nil' 'nil' 'one' 'one' 'one']
我花了好几个小时在这上面。FWIW,the documentation中的示例按预期工作,因此我怀疑在我预期的inverse_transform
工作方式中存在缺陷。我的部分研究包括this和this
如果相关的话,我将使用ipython7.7.0、numpy1.17.3和sciketlearn版本0.21.3
问题是LabelEncoder.fit()总是返回排序后的数据。这是因为它使用
np.unique
这是源代码code我想做你想做的事情的唯一方法是创建你自己的
fit
方法并重写LabelEncoder中的原始方法您只需要重用链接中给出的现有代码,下面是一个示例:
给你:
相关问题 更多 >
编程相关推荐