移动平均指数平滑python实现

移动平均

import numpy as np

def Move_average(list, n):

    list = np.convolve(lis, np.ones(n) / n, mode='valid')
    print("移动平均: ", list)
    return list

def Std(list):

    std = np.std(list)
    print("标准差:", std)

def Smoothing_factor(list1, list2, n, nums):

    T=1.0
    a = 2*list1[-1]-list2[-1]
    b = 2/(n-1)*list1[-1]-list2[-1]
    print("平滑系数a,b分别为: ", a, b)
    X = a+b*T
    print("第%d期的预测值为:" %(nums+1), X)

if __name__ == '__main__':

    nums = 8
    n = 3
    lis = []
    lis2 = []

    for i in range(0, nums):
        lis.append(np.random.randint(100))

    lis.sort()
    print("原始列表为: ", lis)
    lis = Move_average(lis, n)
    Std(lis)
    lis2 = Move_average(lis, n)
    Smoothing_factor(lis, lis2, n, nums)

在这里插入图片描述
指数平滑

import numpy as np


def EMA(list, alpha):
 new_list = np.zeros(len(list))
 new_list[0] = (list[0] + list[1] + list[2]) / 3
 for i in range(1, len(list)):
  new_list[i] = alpha * new_list[i] + (1 - alpha) * new_list[i - 1]
 return new_list

if __name__ == '__main__':
 nums = 7
 alpha = 0.5
 lis = []
 for i in range(0, nums):
  lis.append(np.random.randint(100))

 print("指数平滑结果: ",EMA(lis, alpha))

在这里插入图片描述

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值