【发布时间】:2019-11-17 18:09:15
【问题描述】:
Scikit LabelEncoder 在我的 Jupyter Notebook 中显示出一些令人费解的行为,如下所示:
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。
如果相关,我使用的是 iPython 7.7.0、numpy 1.17.3 和 scikit-learn 版本 0.21.3。
【问题讨论】:
标签: python scikit-learn