#dask #dask-distributed #dask-dataframe #dask-ml
Вопрос:
Я хочу сделать случайные прогнозы леса для большого набора данных и сохранить результат в виде фрейма данных. Я прочитал https://examples.dask.org/machine-learning/parallel-prediction.html и там написано: «Работники могут записывать прогнозируемые значения в общую файловую систему, даже не собирая данные на одной машине», но я не могу понять, как это сделать. Я попытался сделать это, подключившись к распределенному кластеру и выполнив:
x = da.from_array(i,100000)
t = model.predict(x)
t= client.persist(t)
df=dd.from_array(t)
df.to_parquet("xy.parquet")
Однако это не приводит к каким-либо вычислениям в кластере (наблюдаемым с помощью панели мониторинга), и при вычислениях на моем компьютере с оперативной памятью объемом 1 ТБ возникает ошибка to_parquet
памяти, даже для теста, где размер numpy x
составляет и t
составляет 7 ГБ. Все остальное, что я отправляю в кластер, вычисляется там.
Так как же сохранить результаты прогноза?
ИЗМЕНИТЬ: Это, похоже, связано с размером входных x
данных . У него есть форма (24507731,8)
. Если вместо этого я просто добавлю случайные данные с формой (24507,8)
, вычисление завершится. Это довольно удивительно, поскольку ParallelPostfit
предполагается, что в первую очередь это делает возможным прогнозирование на больших данных.
Комментарии:
1. Вы используете
sklearn
для своегоmodel
илиdask-ml
?2. Я завернул
sklearn.ensemble.RandomForestRegressor
сParallelPostfit
формойdask-ml