train_test_split — Не удается работать с массивом Dask с неизвестными размерами фрагментов

#python #dask #dask-ml

#python #dask #dask-ml

Вопрос:

У меня есть набор данных текстовой классификации, в котором я использовал dask parquet для экономии дискового пространства, но теперь столкнулся с проблемой, когда я хочу разделить набор данных на train и протестировать с помощью dask_ml.model_selection.train_test_split .

 ddf = dd.read_parquet('/storage/data/cleaned')
y = ddf['category'].values
X = ddf.drop('category', axis=1).values
train, test = train_test_split(X, y, test_size=0.2)
  

В результате
TypeError: Cannot operate on Dask array with unknown chunk sizes.

Спасибо за помощь.

Комментарии:

1. Что произойдет, если вы отбросите все .values ?

2. И просто из любопытства, вы сформировали файл parquet из CSV? Если да, я был бы рад услышать, как вы это сделали.

3. @InonPeled вы можете преобразовать csv-файл в parquet с помощью dask, подобного dd.read_csv('file.csv').repartition(npartitions=10).to_parquet('your_parquet_directory') . Количество разделов зависит от вас, но рекомендуется иметь размер файла около 100 МБ.

Ответ №1:

Вот что я закончил делать на данный момент:

 ddf = dd.read_parquet('/storage/data/cleaned')
ddf = ddf.to_dask_array(lengths=True)
train, test = train_test_split(ddf, test_size=0.2)
  

Это создаст dask.array некоторой формы dask.array<array, shape=(3937987, 2), dtype=object, chunksize=(49701, 2)>