我正在尝试使用Scikit-Learn的LabelEncoder
来编码字符串标签的pandasDataFrame
。由于dataframe有许多(50+)列,我希望避免为每个列创建LabelEncoder
对象;我宁愿只有一个大的LabelEncoder
对象,它可以跨我的所有数据列工作。
将整个DataFrame
抛入LabelEncoder
会产生以下错误。请记住,我在这里使用的是虚拟数据;实际上,我正在处理大约50列字符串标记的数据,因此需要一个不引用任何列名称的解决方案。
import pandas
from sklearn import preprocessing
df = pandas.DataFrame({
'pets': ['cat', 'dog', 'cat', 'monkey', 'dog', 'dog'],
'owner': ['Champ', 'Ron', 'Brick', 'Champ', 'Veronica', 'Ron'],
'location': ['San_Diego', 'New_York', 'New_York', 'San_Diego', 'San_Diego',
'New_York']
})
le = preprocessing.LabelEncoder()
le.fit(df)
回溯(最近一次调用):文件“”,第1行,在文件“/users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/preprocessing/label.py”中,第103行,在fit y=column_or_1d(y,warn=true)文件“/users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py”,第306行,在column_or_1d中提高ValueError(“错误的输入形状{0}”。format(shape)):错误的输入形状(6,3)
对如何绕过这个问题有什么想法吗?
不过,您可以很容易地做到这一点,
df.apply(LabelEncoder().fit_transform)
编辑2:
在scikit-learn 0.20中,推荐的方法是
OneHotEncoder().fit_transform(df)
from collections import defaultdict
d = defaultdict(LabelEncoder)
# Encoding the variable
fit = df.apply(lambda x: d[x.name].fit_transform(x))
# Inverse the encoded
fit.apply(lambda x: d[x.name].inverse_transform(x))
# Using the dictionary to label future data
df.apply(lambda x: d[x.name].transform(x))
使用Neuraxle的Flatenforeach
步骤,也可以同时对所有扁平化的数据使用相同的LabelEncoder
:
FlattenForEach(LabelEncoder(), then_unflatten=True).fit_transform(df)
对于根据数据列使用单独的LabelEncoder
,或者如果只需要对某些数据列进行标签编码,而不需要对其他数据列进行标签编码,则使用ColumnTransformer
是一种允许对列选择和LabelEncoder实例进行更多控制的解决方案。
问题内容: 我正在尝试使用来编码一大串字符串标签。由于数据框有许多(50+)列,因此我想避免为每一列创建一个对象。我宁愿只有一个可以在我所有数据列中使用的大对象。 将整个数据投入会产生以下错误。请记住,我在这里使用伪数据。实际上,我正在处理大约50列的字符串标记数据,因此需要一种不按名称引用任何列的解决方案。 追溯(最近一次通话最近):文件中的行1,在第y行中= 中的第306行文件引发(“错误的输
我的目标是通过传入我想要共享分类值的列,使其输出如下所示:
我有一个数据集,它包含多个列,这些列的值是字符串格式的。现在我需要使用labelEncoder将这些文本列转换为数值。在下面的例子中,y是我的tain数据集的目标,A0到A13是不同的特征。还有50个特性,但我在这里提供了一个子集。现在,我如何将labelencoder应用于从A0到A8的数据集,并为创建模型创建一个新的编码数据帧?我知道我们可以像下面这样做,但这会说只编码一列。我希望编码器应用于
问题内容: scikit学习的快速SVM问题。训练SVM时,就像 有什么办法可以成为非数字类型的列表?例如,如果我想将向量分类为“猫”或“狗”,而不必使用某种外部查找表将“猫”和“狗”编码为1和2。当我尝试仅传递字符串列表时,我得到… 因此,看起来像只是推弦乐不起作用。有任何想法吗? 问题答案: sklearn的最新版本能够使用字符串作为标签。例如:
我一直在寻找通过python文档和论坛来选择列的方法,但是关于列索引的每个示例都过于简单。 假设我有一个10x10的数据帧 到目前为止,给出的所有文档只是一个简单的索引示例,如
先决条件 Numpy, Scipy IPython matplotlib scikit-learn (http://scikit-learn.org) 警告:从版本0.9(在2011年9月发布)起,scikit-learn导入路径从scikits.learn 改为 sklearn 3.5.1 加载样例数据集 首先,我们将加载一些数据来玩玩。我们将使用的数据是知名的非常简单的花数据鸢尾花数据集。 我