Dask NotImplementedError на map_partitions - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь использовать функцию предварительной обработки MultiLbelBinarizer в sklearn, чтобы взять 1-столбец df, в котором каждая ячейка является списком, и вернуть категориальную кодировку

например,

[1,2]
[1]
[3,2]
[1]

становитсяфрейм данных, например:

1 1 0
1 0 0
0 1 1   
1 0 0

Он работает с обычным фреймом данных pandas, но с фреймом данных dask завершается ошибкой с NotImplementedError.

Кто-нибудь знает альтернативный метод для вычисления такого кодирования с помощьюdask dataframe в распределенном порядке?

Вот рабочий код:

from sklearn.preprocessing import MultiLabelBinarizer
def binarize_data(df):

    # Binarize connectors
    mlb=MultiLabelBinarizer()
    tmp = df.iloc[:, 0]

    res=mlb.fit_transform(tmp)
    binarized_data = pd.DataFrame(res,
                                 columns=[tmp.name+"_" +
                                          c for c in mlb.classes_],
                                 index=tmp.index, dtype='int')

    return binarized_data
binarize_data(pd.DataFrame(dict(foo=pd.Series([["1","2"], ["1"], ["3", "2"], ["1"]]))))

, а вот ошибочный код dask:

from sklearn.preprocessing import MultiLabelBinarizer
def binarize_data(df):

    # Binarize connectors
    mlb=MultiLabelBinarizer()
    tmp = df.iloc[:, 0]

    res=mlb.fit_transform(tmp)
    binarized_data = pd.DataFrame(res,
                                 columns=[tmp.name+"_" +
                                          c for c in mlb.classes_],
                                 index=tmp.index, dtype='int')

    return binarized_data
binarize_data(dd.from_pandas(pd.DataFrame(dict(foo=pd.Series([["1","2"], ["1"], ["3", "2"], ["1"]]))), npartitions=10))
...