В регрессионном тесте я получил кадр данных 1000 * 100000 pandas, подобный этому:
df=pd.DataFrame(np.random.random((1000,100)))
Первый столбец - метка y, остальные - x1-x99. Мне нужно выбрать три или семь переменных var-x, чтобы соответствовать y, выполнить каждую регрессию, получить все выходные данные и найти лучший выбор.
Я нахожу это в проекте Ray. Вызывая ray.put(object)
, большой Массив хранится в общей памяти и может быть доступен всем рабочим процессам без создания копий.
Слишком много случаев (161700 + 3921225 + ....) и нормально читать только базовый фрейм данных, так как эти работники не общаются друг с другом, им просто нужно вернуть выходные данные в главный один.
Есть ли что-то подобное в Dask, чтобы избежать копирования данных на каждого работника? Это может выглядеть так:
dask.put(df)
Тогда каждый работник может читать свои собственные задания, например:
from itertools import combinations
rt=[]
for c in combinations(range(100),3):
(i,j,k)=c
rt.append(model(df.iloc[:,0],df.iloc[:,[i,j,k]]).fit())
rt=dask.compute(*rt)
, чтобы избежать создания каждого экземпляра y, X в main и отправки каждого y, X всем работникам?