Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from scipy import optimize
- def calc_shifted_ewm(series, alpha, adjust=True):
- return series.shift().ewm(alpha=alpha, adjust=adjust).mean()
- def find_best_signal(series, adjust=False, eps=10e-5):
- def f(alpha):
- shifted_ewm = calc_shifted_ewm(series=series, alpha=min(max(alpha, 0), 1), adjust=adjust)
- corr = np.mean(np.power(series - shifted_ewm, 2))
- return corr
- res = optimize.differential_evolution(func=f, bounds=[(0 + eps, 1 - eps)])
- return calc_shifted_ewm(series=series, alpha=res['x'][0], adjust=adjust)
- #############################################
- roll = df.groupby(['entity', 'i_n_dow']).apply(lambda g: find_best_signal(g['target']))
- 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