Обычные конвейеры 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.