Я пытаюсь найти сезонных клиентов с большим количеством данных, используя модель R в блоках данных Azure. В настоящее время я могу запустить приведенный ниже код Python / R, который использует модель R: «Tbats» в блоках данных и дает результаты, которые я хочу получить для небольшой группы клиентов. Тем не менее, он не работает в масштабе / параллельно / распределен как искровая работа, как это в настоящее время написано.
Если я переписываю это в sparkR, могу ли я даже использовать модель tbats? Я также был бы открыт для использования других моделей для определения сезонности, если нет способа запустить tbats в качестве распределенной искровой работы в блоках данных. Я вижу, что у sparkR есть библиотека ML "mLlib", но я не вижу модель сезонности, которую я могу использовать.
Или если я возьму этот код ниже и сделаю все это R (используя цикл применения? Вместо каждого цикла python?), Возможно ли выполнить масштабирование в кластере блоков данных?
Просто интересно, может ли кто-нибудь указать мне правильное направление, поскольку я очень новичок в этом. В конечном счете, я просто пытаюсь очень быстро идентифицировать сезонных клиентов, используя некоторую модель ML с большим количеством данных.
Спасибо!
for customerid, dataForCustomer in df2.groupby(by=['customer_id']):
startYear = dataForCustomer.head(1).iloc[0].yr
startMonth = dataForCustomer.head(1).iloc[0].mnth
endYear = dataForCustomer.tail(1).iloc[0].yr
endMonth = dataForCustomer.tail(1).iloc[0].mnth
#Creating a time series object
customerTS = stats.ts(dataForCustomer.usage.astype(int),
start=base.c(startYear,startMonth),
end=base.c(endYear, endMonth),
frequency=12)
r.assign('customerTS', customerTS)
##Here comes the R code piece
try:
seasonal = r('''
fit<-tbats(customerTS, seasonal.periods = 12,
use.parallel = TRUE)
fit$seasonal
''')
except:
seasonal = 1
df_list.append({'customer_id': customerid, 'seasonal': seasonal})