我正在尝试在Jupyter笔记本上使用某些趋势数据进行Python指数平滑处理。我尝试导入
from statsmodels.tsa.api import ExponentialSmoothing
但是出现以下错误
ImportError: cannot import name 'SimpleExpSmoothing'
我不知道如何从Jupyter笔记本中解决该问题,所以我试图声明一个执行指数平滑的函数。
比方说,函数的名称为expsmoth(list,a)
并接受列表list
和数字a
并给出另一个名为explist
的列表,其元素由以下递归关系给出:
explist[0] == list[0]
explist[i] == a*list[i] + (1-a)*explist[i-1]
我仍然在学习python。如何声明一个以列表和数字作为参数并返回其元素由上述递归关系给出的列表的函数?
答案 0 :(得分:0)
一个简单的解决方案就是
def explist(data, a):
smooth_data = data.copy() # make a copy to avoid changing the original list
for i in range(1, len(data)):
smooth_data[i] = a*data[i] + (1-a)*smooth_data[i-1]
return smooth_data
该函数应与本机python列表或numpy数组一起使用。
import matplotlib.pyplot as plt
import numpy as np
data = np.random.random(100) # some random data
smooth_data = explist(data, 0.2)
plt.plot(data, label='orginal')
plt.plot(smooth_data, label='smoothed')
plt.legend()
plt.show()