【发布时间】:2021-04-19 16:23:12
【问题描述】:
我正在尝试构建一个使用指数平滑来预测商品价格的项目。我从基本的指数平滑开始,并将逐步达到三倍指数平滑。但是,当我使用此代码时
with open('HistoricalData_1617379638571.csv', newline='') as f:
reader = csv.reader(f)
data = list(reader)
df = pd.read_csv('HistoricalData_1617379638571.csv')
df.columns = ['Date','Close/Last','Volume','Open','High','Low']
df.set_index('Date', inplace=True)
print(df)
x=df.loc[:,'Close/Last'].values
y=list(x)
z=[int(i) for i in y]
print(z)
alpha=0.9
def exp_smooth(alpha,z):
for i in z:
new_res=z.append((alpha * z[i] + (1 - alpha * z[i-1])))
print(new_res)
exp_smooth(alpha,z)
我不断收到错误消息
Traceback (most recent call last):
File "main.py", line 38, in <module>
exp_smooth(alpha,z)
File "main.py", line 34, in exp_smooth
new_res=z.append((alpha * z[i] + (1 - alpha * z[i-1])))
IndexError: list index out of range
我做错了什么?如何解决此问题,以便我的指数平滑函数返回错误以外的内容?
【问题讨论】:
-
请修正缩进。代码的哪些部分在
with块内? -
for i in z:将z设置为元素,而不是它们的索引。你为什么用z[i]? -
z.append()修改列表,它不返回任何内容。所以new_res将是None。 -
你可能想要的是
for i in range(1, len(z)):,你需要从1开始,这样z[i-1]才有效。 -
我怀疑你可以在
numpy或 statpy 中找到内置的指数平滑函数。
标签: python dataframe forecasting