Я пытаюсь преобразовать свои категориальные функции в dask dataframe в один горячий кодировщик.Мой фрейм данных полностью посвящен категориальным особенностям:
df.dtypes
a category
b category
c category
Length: 3, dtype: object
Поэтому я подумал, что это так же просто, как вызвать экземпляр OneHotEncoder, как здесь:
from dask_ml.preprocessing import OneHotEncoder
enc = OneHotEncoder()
enc.fit_transform(df)
Но, похоже, это не таки он выдает эту ошибку:
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-6-f656d2d2eec8> in <module>
2
3 enc = OneHotEncoder()
----> 4 enc.fit_transform(df_churn_train[columns_categorical])
dask_environment/lib/python3.6/site-packages/sklearn/preprocessing/_encoders.py in fit_transform(self, X, y)
514 self._categorical_features, copy=True)
515 else:
--> 516 return self.fit(X).transform(X)
517
518 def _legacy_transform(self, X):
dask_environment/lib/python3.6/site-packages/dask_ml/preprocessing/_encoders.py in fit(self, X, y)
126
127 if isinstance(X, (pd.Series, pd.DataFrame)) or dask.is_dask_collection(X):
--> 128 self._fit(X, handle_unknown=self.handle_unknown)
129 else:
130 super(OneHotEncoder, self).fit(X, y=y)
dask_environment/lib/python3.6/site-packages/dask_ml/preprocessing/_encoders.py in _fit(self, X, handle_unknown)
174 for col in X.columns:
175 Xi = X[col]
--> 176 cats = _encode(Xi, uniques=Xi.cat.categories)
177 self.categories_.append(cats)
178 self.dtypes_.append(Xi.dtype)
dask_environment/lib/python3.6/site-packages/dask/dataframe/categorical.py in categories(self)
211 "supported. Please use `column.cat.as_known()` or "
212 "`df.categorize()` beforehand to ensure known categories")
--> 213 raise NotImplementedError(msg)
214 return self._delegate_property(self._series._meta, 'cat', 'categories')
215
NotImplementedError: `df.column.cat.categories` with unknown categories is not supported. Please use `column.cat.as_known()` or `df.categorize()` beforehand to ensure known categories
Я думаю, что я не могу вызвать cat accesor с методом as_known
, потому что это только для Series, а не для DataFrames.Поэтому я попытался вызвать .categorized () к моему объекту df, но всегда получаю эту ошибку:
KilledWorker: ("('assign-astype-fillna-get-categories-chunk-getitem-pandas_read_text-read-block-from-delayed-xxxxxxxxxx', 30)", 'tcp://x.x.x.x:x')
Есть идеи?