使用 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() 的类型错误