使用 labelEncoder 时输入形状错误

Posted

技术标签:

【中文标题】使用 labelEncoder 时输入形状错误【英文标题】:bad input shape when using labelEncoder 【发布时间】:2020-12-16 17:13:57 【问题描述】:

我有一个相当大的数据框,其中包含数值和分类值。我正在尝试对分类值进行编码,但出现上述错误。

这是一个简单版本的代码:

from collections import defaultdict
d = defaultdict(LabelEncoder)
# Encoding the variable
fit = df[catgoricalValues].apply(lambda x: d[x.name].fit_transform(df[catgoricalValues]))

我正在使用here 描述的方法,但我没有将其应用于整个数据帧,而是指定了要编码的列。

我收到此错误:

ValueError: bad input shape (490546, 11)

【问题讨论】:

这能回答你的问题吗? Label encoding across multiple columns in scikit-learn 【参考方案1】:

更新

似乎您正在尝试将 LabelEncoder 应用于多个列; 虽然你可以apply the same LabelEncoder to all columns;

from sklearn.preprocessing import LabelEncoder

encoded = df[categoricalVal].apply(LabelEncoder().fit_transform)

最好为每一列使用一个新的编码器。上面的链接应该会为您提供解决方案。

【讨论】:

我收到了同样的错误 - ValueError: bad input shape (490546, 11) 感谢您的更新。有没有更好的方法来做我想做的事情?我只有一个分类值列表,我想将它们全部编码(然后稍后反转编码)。当我运行您的代码时,出现此错误 - TypeError: argument must be a string or number 好的,你能提供一个你的数据集的小例子吗?

以上是关于使用 labelEncoder 时输入形状错误的主要内容,如果未能解决你的问题,请参考以下文章

利用sklearn的LabelEncoder对标签进行数字化编码

获取 ValueError:y 在使用 scikit learn 的 LabelEncoder 时包含新标签

为啥不应该使用 sklearn LabelEncoder 对输入数据进行编码?

LabelEncoder.fit_transform() 的类型错误

make[2]: *** [libevent.la] 错误 1

ValueError:尝试计算 ROC 曲线时输入形状错误 (2, 256, 3)