Я делаю модель прогнозирования персонала скорой помощи. У меня есть датафрейм с прогнозом, номером дня недели, часом, днем года. Это 440 860 строк, и когда я запускаю эту ячейку и вызываемая ею функция занимает более 90 минут. У кого-нибудь есть предложения по ускорению этого процесса?
for i in range(2,6):
_,mean_err, median_err = Mov_ave_pred(ers_base,i)
print("for a window of {} time bins: MAPE = {}, MSE = {}".format(i,mean_err,median_err))
Я также пробовал это
_, mean_err, median_err = [Mov_ave_pred(ers_base,i) for i in range(1,2)]
print ("for a window of {} time bins: MAPE = {}, MSE = {}".format(i,mean_err,median_err))
Эта функция вызывает:
def Mov_ave_pred(dataframe, window_size):
# to fine tune I think gridsearch on window_size
pred_val=(dataframe['prediction'].values)[0]
error=[]
pred_values=[]
for i in range(0,max(minute_bin_create_times)*posts):
k = i%max(minute_bin_create_times)
if k == 0:
pred_values.append(0)
error.append(0)
pred_val=(dataframe['prediction'].values)[i]
continue
pred_values.append(pred_val)
error.append(abs(pred_val-(dataframe['prediction'].values)[i]))
if k+1>=window_size:
pred_val=int(sum((dataframe['prediction'].values)[(i+1)-window_size:(i+1)])/window_size)
else:
pred_val=int(sum((dataframe['prediction'].values)[i-k:(i+1)])/k)
dataframe['move_ave_pred'] = pred_values
dataframe['move_ave_err'] = error
mape_err =
(sum(error)/len(error))/(sum(dataframe['prediction'].values)/len(dataframe['prediction'].values))
mse_err = sum([e**2 for e in error])/len(error)
return dataframe,mape_err,mse_err