Я пытаюсь использовать функцию предварительной обработки sklaarn MultilabelBinarizer, чтобы взять 1-столбец df, в котором каждая ячейка является списком, и вернуть категориальную кодировку
, например
[1,2]
[1]
[3,2]
[1]
становится фреймом данных:
1 1 0
1 0 0
0 1 1
1 0 0
Он работает с обычным фреймом данных pandas, но с dask фреймом данных происходит сбой с NotImplementedError.
Кто-нибудь знает альтернативный метод для вычисления такого кодирования с распределенным кадром данных?
Вот рабочий код:
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"]]))))
и вот код ошибки:
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))