Я работаю над моделью машинного обучения, используя регрессию для прогнозирования будущих значений для различных категорий данных. Сами данные довольно сложны, поэтому ниже я включил пример, имитирующий то, что я пытаюсь достичь:
df =
category date data
1 2021-06-19 94.9
1 2021-06-20 93.3
1 2021-06-21 91.6
... ... ...
2 2021-06-19 13.1
2 2021-06-20 11.9
2 2021-06-21 10.4
... ... ...
3 2021-06-19 53.9
3 2021-06-20 55.3
3 2021-06-21 59.3
... ... ...
В настоящее время я использую цикл for, запуская свою модель прогнозирования для каждой категории:
categories = df.category.unique()
for category in categories:
# run my model
# save results
Однако это отнимает много времени, так как у меня около 4000 категорий, которые я просматриваю. Прогноз каждой категории не зависит от других.
Есть ли простой способ распараллелить эту работу, вместо последовательного выполнения прогноза по каждой категории?
Spark является популярным результатом при поиске в Интернете, однако это кажется большой кривой обучения (и может привести к потере некоторых функций, доступных в python/pandas), и я надеюсь, что есть что-то, что я могу использовать в библиотеках python, которые могут быть более подходящим.
Пожалуйста, разместите код внутри цикла, т.е. что вы делаете с каждой категорией.
Звучит параллелизуемо, а ЦП дешев, так что все сводится к тому, что вы хотите изучать и делать — и мы не можем выкинуть это из вашей головы. Машина с 96 ЦП по запросу из Google Cloud стоит около 5-6 долларов в час (1 доллар в час, если вы можете терпеть ее отзыв), поэтому хитрость заключается в том, чтобы иметь сценарий запуска, который загружает ваши данные из облачного хранилища, получает их. сделано, сохраняется обратно в облачное хранилище и завершает работу машины. Вы можете начать с меньших, более дешевых машин и просто изменить количество процессоров в графическом интерфейсе. Другая стоимость составляет около 0,12 доллара США за ГБ для загрузки из облачного хранилища в места за пределами Google Cloud.