Advertisement
Guest User

Untitled

a guest
May 20th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. from scipy import optimize
  2.  
  3.  
  4. def calc_shifted_ewm(series, alpha, adjust=True):
  5. return series.shift().ewm(alpha=alpha, adjust=adjust).mean()
  6.  
  7.  
  8. def find_best_signal(series, adjust=False, eps=10e-5):
  9.  
  10. def f(alpha):
  11. shifted_ewm = calc_shifted_ewm(series=series, alpha=min(max(alpha, 0), 1), adjust=adjust)
  12. corr = np.mean(np.power(series - shifted_ewm, 2))
  13. return corr
  14.  
  15. res = optimize.differential_evolution(func=f, bounds=[(0 + eps, 1 - eps)])
  16.  
  17. return calc_shifted_ewm(series=series, alpha=res['x'][0], adjust=adjust)
  18.  
  19. #############################################
  20.  
  21. roll = df.groupby(['entity', 'i_n_dow']).apply(lambda g: find_best_signal(g['target']))
  22. df['i_n_optimized_ewm_by_entity_dow'] = roll.sort_index(level=['entity', 'time_stamp']).values
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement