失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 简单移动平均SMA和指数移动平均EMA

简单移动平均SMA和指数移动平均EMA

时间:2021-12-30 22:10:33

相关推荐

简单移动平均SMA和指数移动平均EMA

一、简单移动平均SMA

最近有一个平滑的需求:

设置平滑期数h(奇数),每期点平滑方法是:取该期前后共m期(含本期)点的平均值。如果前或后没有足够的点则不用平滑。

特别地,如果取m=1,那就是取本期即可,相当于不平滑;如[1,3,2,4] -> [1,3,2,4]

如果取m=3,那就是取本期前一期、本期以及本期后一期的平均值;如[1,3,2,4] -> [1,2,3,4],其中开头的1和末尾的4是不用平滑的,因为前或后没有足够的点。2 = (1+3+2)/3,3 = (3+2+4)/3

这种平滑方式就是简单移动平均,不过保留了两端的点。下面给出带两端和不带两端的两种方式。

1、不带端点:

import numpy as npa = [1,4,5,10,2,8,9]h = 3# 注意要单独处理一下h=1的情况if h==1:# 相当于不平滑passelse:print(np.convolve(a, np.ones(h)/h, mode='valid'))Out[13]: array([3.33333333, 6.33333333, 5.66666667, 6.66666667, 6.33333333])

2、带端点

import numpy as npa = [1,4,5,10,2,8,9]h = 3# 注意要单独处理一下h=1的情况if h==1:# 相当于不平滑passelse:half_h = h // 2b[half_h:-half_h] = np.convolve(a, np.ones(h)/h, mode='valid')print(b)Out[20]: [1, 3.333333333333333, 6.333333333333333, 5.666666666666667, 6.666666666666666, 6.333333333333333, 9]

二、指数移动平均EMA

接触这个是学弟做深度学习相关毕设问我的,用于对模型参数做平均。

普通的EMA可以看这个实现移动平均指数平滑python实现

但在深度学习方面的应用主要还是看这两个理解吧

EMA(指数移动平均)及其深度学习应用

【炼丹技巧】指数移动平均(EMA)的原理及PyTorch实现

如果觉得《简单移动平均SMA和指数移动平均EMA》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。