为什么不应该使用 sklearn LabelEncoder 来编码输入数据?

Sve*_*ugh 9 python sklearn-pandas feature-engineering

sklearn.LabelEncoder的文档

这个转换器应该用于编码目标值,即 y,而不是输入 X。

为什么是这样?

我只发布了这个建议在实践中被忽略的一个例子,尽管似乎还有更多。 https://www.kaggle.com/matleonard/feature-generation包含

#(ks is the input data)

# Label encoding
cat_features = ['category', 'currency', 'country']
encoder = LabelEncoder()
encoded = ks[cat_features].apply(encoder.fit_transform)
Run Code Online (Sandbox Code Playgroud)

sog*_*ogu 2

它改变输出值 y 并不是什么大事,因为它只是基于此重新学习(如果它是基于错误的回归)。

\n

如果它改变了输入值 \xe2\x80\x9cX\xe2\x80\x9d 的权重,就会出现问题,从而无法做出正确的预测。

\n

如果没有太多选项,例如编码为 int-s 的 2 个类别、2 个货币、2 个城市,您可以在 X 上执行此操作不会对游戏产生太大影响。

\n