简单移动平均SMA和指数移动平均EMA
一、簡單移動(dòng)平均SMA
最近有一個(gè)平滑的需求:
設(shè)置平滑期數(shù)h(奇數(shù)),每期點(diǎn)平滑方法是:取該期前后共m期(含本期)點(diǎn)的平均值。如果前或后沒有足夠的點(diǎn)則不用平滑。
特別地,如果取m=1,那就是取本期即可,相當(dāng)于不平滑;如[1,3,2,4] -> [1,3,2,4]
如果取m=3,那就是取本期前一期、本期以及本期后一期的平均值;如[1,3,2,4] -> [1,2,3,4],其中開頭的1和末尾的4是不用平滑的,因?yàn)榍盎蚝鬀]有足夠的點(diǎn)。2 = (1+3+2)/3,3 = (3+2+4)/3
這種平滑方式就是簡單移動(dòng)平均,不過保留了兩端的點(diǎn)。下面給出帶兩端和不帶兩端的兩種方式。
1、不帶端點(diǎn):
import numpy as np a = [1,4,5,10,2,8,9] h = 3 # 注意要單獨(dú)處理一下h=1的情況 if h==1: # 相當(dāng)于不平滑pass else:print(np.convolve(a, np.ones(h)/h, mode='valid')) Out[13]: array([3.33333333, 6.33333333, 5.66666667, 6.66666667, 6.33333333])2、帶端點(diǎn)
import numpy as np a = [1,4,5,10,2,8,9] h = 3 # 注意要單獨(dú)處理一下h=1的情況 if h==1: # 相當(dāng)于不平滑pass else: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]二、指數(shù)移動(dòng)平均EMA
接觸這個(gè)是學(xué)弟做深度學(xué)習(xí)相關(guān)畢設(shè)問我的,用于對模型參數(shù)做平均。
普通的EMA可以看這個(gè)實(shí)現(xiàn)移動(dòng)平均指數(shù)平滑python實(shí)現(xiàn)
但在深度學(xué)習(xí)方面的應(yīng)用主要還是看這兩個(gè)理解吧
EMA(指數(shù)移動(dòng)平均)及其深度學(xué)習(xí)應(yīng)用
【煉丹技巧】指數(shù)移動(dòng)平均(EMA)的原理及PyTorch實(shí)現(xiàn)
總結(jié)
以上是生活随笔為你收集整理的简单移动平均SMA和指数移动平均EMA的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Acrelcloud-6000安全用电管
- 下一篇: 企业老板学会整理申请icp许可证材料节省