Pandas 如何将LabelEncoder应用于Dask数据帧以对分类值进行编码

Pandas 如何将LabelEncoder应用于Dask数据帧以对分类值进行编码,pandas,data-science,dask,dask-distributed,dask-ml,Pandas,Data Science,Dask,Dask Distributed,Dask Ml,我有一个Dask数据帧,它由分类数据和数字(浮点和整数)数据组成。当我尝试使用下面的代码对分类列进行LabelEncode编码时,我得到了一个错误 from dask_ml.preprocessing import LabelEncoder, Categorizer encoder = LabelEncoder() encoded = encoder.fit_transform(train_X.values) 错误如下: ValueError: bad input shape (3686

我有一个Dask数据帧,它由分类数据和数字(浮点和整数)数据组成。当我尝试使用下面的代码对分类列进行LabelEncode编码时,我得到了一个错误

from dask_ml.preprocessing import LabelEncoder, Categorizer

encoder = LabelEncoder()

encoded = encoder.fit_transform(train_X.values)

错误如下:

ValueError: bad input shape (36862367, 15)
此外,我尝试了一种不同的方法:

from sklearn.externals.joblib import parallel_backend


with parallel_backend('dask'):

    from sklearn.pipeline import make_pipeline
    pipe = make_pipeline(
    Categorizer(), LabelEncoder())

    pipe.fit(train_X)

    pipe.transform(train_X)
这给了我一个新的错误:

TypeError: fit() takes 2 positional arguments but 3 were given

有谁能告诉我在Dask数据帧中对分类数据应用编码的正确方法吗。提前感谢。

在scikit学习/dask ml中,LabelEncoder转换一维输入。因此,您可以将其用于pandas/dask系列,而不是数据帧

>>> import dask.dataframe as dd
>>> import pandas as pd
>>> data = dd.from_pandas(pd.Series(['a', 'a', 'b'], dtype='category'),
...                       npartitions=2)
>>> le.fit_transform(data)
dask.array<values, shape=(nan,), dtype=int8, chunksize=(nan,)>
>>> le.fit_transform(data).compute()
array([0, 0, 1], dtype=int8)
>>将dask.dataframe作为dd导入
>>>作为pd进口熊猫
>>>数据=数据来源(pd.系列(['a','a','b'],数据类型='category'),
…npartitions=2)
>>>le.fit_变换(数据)
dask阵列
>>>le.fit_变换(数据).compute()
数组([0,0,1],dtype=int8)