Как передать фрейм данных Dask в качестве входных данных для моделей dask-ml?

Обычные конвейеры ML включают обработку панелей данных или панелей данных dask в форму, которая может быть передана в модели ML. Однако многие модели dask-ml не могут принимать кадры данных Dask, поскольку они не отслеживают количество строк на раздел. Вызов fit метод бросает Cannot fit on dask.dataframe due to unknown partition lengths error, Что мне следует сделать, чтобы я мог передать кадры данных Dask в модель dask-ml?

Вот пример:

import dask.dataframe as dd
import pandas as pd
from dask_ml.cluster import KMeans

df = dd.from_pandas(pd.DataFrame({'A': [1, 2, 3, 4, 5], 
                                  'B': [6, 7, 8, 9, 10]}),
                    npartitions=2)

kmeans = KMeans()
kmeans.fit(df)

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-53-6c1545864b12> in <module>()
      6 
      7 kmeans = KMeans()
----> 8 kmeans.fit(df)

~/anaconda3/envs/pds/lib/python3.6/site-packages/dask_ml/cluster/k_means.py in fit(self, X, y)
    187 
    188     def fit(self, X, y=None):
--> 189         X = self._check_array(X)
    190         labels, centroids, inertia, n_iter = k_means(
    191             X,

~/anaconda3/envs/pds/lib/python3.6/site-packages/dask_ml/utils.py in wraps(*args, **kwargs)
    298         def wraps(*args, **kwargs):
    299             with _timer(f.__name__, _logger=logger, level=level):
--> 300                 results = f(*args, **kwargs)
    301             return results
    302 

~/anaconda3/envs/pds/lib/python3.6/site-packages/dask_ml/cluster/k_means.py in _check_array(self, X)
    159         elif isinstance(X, dd.DataFrame):
    160             raise TypeError(
--> 161                 "Cannot fit on dask.dataframe due to unknown " "partition lengths."
    162             )
    163 

TypeError: Cannot fit on dask.dataframe due to unknown partition lengths.

1 ответ

Решение

Теперь это поддерживается мастером dask-ml с помощью https://github.com/dask/dask-ml/pull/393

Это будет включено в выпуск Dask-ML 0.10.

Другие вопросы по тегам