移动平均
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))