Я пытаюсь ускорить выполнение python кода в ячейке в среде Google Colab - PullRequest
0 голосов
/ 13 января 2020

Я делаю модель прогнозирования персонала скорой помощи. У меня есть датафрейм с прогнозом, номером дня недели, часом, днем ​​года. Это 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...