【问题标题】:Declare a function to do exponential smothing on data声明一个函数来对数据进行指数平滑
【发布时间】:2019-06-14 10:03:42
【问题描述】:

我正在尝试在 Python 中对 Jupyter 笔记本上的一些去趋势数据进行指数平滑处理。我尝试导入

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。如何声明一个以列表和数字为参数的函数,并返回一个列表,其元素由上述递归关系给出?

【问题讨论】:

标签: python function recurrence


【解决方案1】:

解决问题的简单方法是

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()

【讨论】:

  • 谢谢,我是这样做的,但首先声明了 smooth_data = [] 并在附加值之后,但它给了我错误。再次感谢
猜你喜欢
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 2019-02-04
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
相关资源
最近更新 更多