LabelEncoder 和OneHotEncoder
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LabelEncoder 和OneHotEncoder相关的知识,希望对你有一定的参考价值。
参考技术A 功能:都是可以将不连续的数字或文本(类别特征)转为数字。在sklearn中都支持,
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
区别:
labelencoder将特征转化为一列数字。 数字可以很大。
如: red blue yellow black 0 1 2 3
onehotencoder:将一列文本数据转化为一列或多列只用0 1表示的数据
如: red blue yellow black (100,001,100,010)
类似于只可二进制数字表示
使用 labelEncoder 时输入形状错误
【中文标题】使用 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 和OneHotEncoder的主要内容,如果未能解决你的问题,请参考以下文章
labelencoder 和 OneHotEncoder 的值错误