简单移动平均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 np
a = [1,4,5,10,2,8,9]
h = 3
# 注意要单独处理一下h=1的情况
if h==1: # 相当于不平滑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、带端点
import numpy as np
a = [1,4,5,10,2,8,9]
h = 3
# 注意要单独处理一下h=1的情况
if h==1: # 相当于不平滑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]
二、指数移动平均EMA
接触这个是学弟做深度学习相关毕设问我的,用于对模型参数做平均。
普通的EMA可以看这个实现移动平均指数平滑python实现
但在深度学习方面的应用主要还是看这两个理解吧
EMA(指数移动平均)及其深度学习应用
【炼丹技巧】指数移动平均(EMA)的原理及PyTorch实现
简单移动平均SMA和指数移动平均EMA相关推荐
- Python 金融量化 均线系统交易策略专题(简单移动平均,加权移动平均,指数加权移动平均,异同移动平均MACD等解读与绘图)
捕捉趋势最普遍的方法为移动平均线,根据求平均的方式不同,移动平均数又可分为简单移动平均数(Simple Moving Average, SMA),加权移动平均数(Weighted Moving Ave ...
- paddlepaddle 20 指数移动平均(ExponentialMovingAverage,EMA)的实现与使用(支持静态图与动态图)
指数移动平均(ExponentialMovingAverage,EMA)是以指数式递减加权的移动平均,每一次更新都对上一次保留的权重按照decay进行衰减.其计算方式为pram_n'=(pram_n' ...
- 时间序列分析 - 移动平均SMA, WMA, EMA(EWMA) 之理论公式
原文: https://zh.wikipedia.org/w/index.php?title=%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87&variant=zh-c ...
- 时间序列分析 - 移动平均SMA, EMA(EWMA) 之python
pandas: pandas.DataFrame.rolling pandas.DataFrame.ewm pandas.DataFrame.mean 其中rolling可以指定窗口类型win_typ ...
- python 移动平均函数_「EMA系列之I」如何理解EMA指数移动平均值以及Python实现
「EMA系列」打算写三篇,从最基本的到比较深入的都会涉及,谈谈对EMA及其使用的理解. 这篇文章是第一篇Part 1,主要讲讲如何用比较直接的方式去理解经典EMA. EMA的加权平均值定义 EMA是E ...
- 【量化投资实训】基于MATLAB实验三.指数移动平均SMA
函数原型 function SmaValue = SMA(Price, Len, Weight) matalab实现 function SmaValue = SMA( Price,Len,Weight ...
- python 移动平均线_Python 计算EMA(指数移动平均线)
总结 使用递归和循环两种方法来完成 python环境下循环相比于递归更快,更适应极端样本情况 递归 def _ema(arr,i=None): N = len(arr) α = 2/(N+1) #平滑 ...
- 移动平均滤波器 matlab,移动平均滤波的原理---matlab函数的实现smooth
移动平均滤波基于统计规律,将连续的采样数据看成一个长度固定为N的队列,在新的一次测量后,上述队列的首数据去掉,其余N-1个数据依次前移,并将新的采样数据插入,作为新队列的尾:然后对这个队列进行算术运算 ...
- python 移动平均线_6移动平均线预测交易
清华编程高手尹成带你基于算法实践python量化交易 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策 ...
最新文章
- ICLR 2020| 最新NAS benchmark:0.1秒完成NAS算法搜索
- excel in python
- 兰州现超级“牛大”碗比腰粗:牛肉面吃出火锅范
- 在一行上添加一个简单的if-then-else语句[重复]
- linux shell read 从键盘或标准输入中读取文本
- PAT甲级1045 Favorite Color Stripe (30 分):[C++题解]最佳彩色带、DP、公共子序列变形
- 你一定会用的18个linux网络监控工具
- zzuli 2269:minval
- 静态密码已经OUT 探索身份验证新方式
- 计算机二级题库access选择题_计算机二级access选择题题库
- 获取全国所有省份,市区县的中文名和英文名
- win10应用及应用商店闪退有效解决办法
- java吉他游戏_[Java]吉他谱浏览器 0.1
- 通俗解释「什么是云计算」
- MySQL主从- slave跳过错误
- android studio signingconfigs 打正式包,Android-SigningConfigs打包配置
- [论文总结] 种群、保护与生态遗传学笔记
- 海康摄像头检测摄像头是否处于在线状态
- win10禁用笔记本原本键盘
- 《计算机网络》第七版第一章总结及部分课后习题答案