【发布时间】:2021-02-10 19:51:30
【问题描述】:
我一直在与 python 列表斗争。我不知道我是怎么做到的,但是每次我使用列表时,我最终都会卡住,我不知道如何解决这个问题。
我确信这是一个很容易解决的问题,但我已经尝试了一个小时,但我完全陷入困境。
我想对名为 train_data 的 pandas.series 数据执行指数运行平均值,然后预测未来 20 天的输出(我知道使用这个模型实际上会出现很多错误时间预测,但我需要做那个模型来实际演示它)。
这是代码。错误只是一个简单的
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-40-cd9f9f5581ef> in <module>()
17 running_mean = running_mean*decay + (1.0-decay)*my_data[pred_idx-1]
18 run_avg_predictions14.append(running_mean)
---> 19 mse_errors.append((run_avg_predictions14[-1]-my_data[pred_idx])**2)
20 run_avg_x14.append(date)
21
IndexError: list index out of range
但我不知道如何解决。
import numpy as np
import pandas as pd
window_size14 = 14
pred_len = 20
my_data = []
for i in range(len(train_data)):
my_data.append(train_data[i])
run_avg_predictions14 = []
run_avg_x14 = []
mse_errors = []
running_mean = 0.0
for i in range(pred_len):
run_avg_predictions14.append(running_mean)
decay = 0.5
N = len(my_data)+pred_len-1
for pred_idx in range(1,N):
running_mean = running_mean*decay + (1.0-decay)*my_data[pred_idx-1]
run_avg_predictions14.append(running_mean)
mse_errors.append((run_avg_predictions14[-1]-my_data[pred_idx])**2)
run_avg_x14.append(date)
my_data = run_avg_predictions14
print('MSE error: %.5f'%(0.5*np.mean(mse_errors)))
train_data 看起来像这样:
0 0.959707
1 0.959707
2 0.948718
3 0.959707
4 0.967033
...
295 0.648352
296 0.769231
297 0.868132
298 0.956044
299 0.989011
Length: 300, dtype: float64
【问题讨论】:
-
请包含完整的错误回溯。
-
pred_idx从1变为N。N是len(my_data) + pred_len - 1。pred_len是20。然后你尝试访问my_data[pred_idx]。不能引发IndexError的唯一方法是如果pred_len是0。 -
@Paul M. 这实际上是有道理的。谢谢。
标签: python python-3.x list indexing