我总是在与python列表进行不断的斗争。我不知道我是如何做到这一点的,但每次我和list一起工作时,我最终都会结巴,我不知道如何解决这个问题
我相信这是一个非常简单的问题,但我已经尝试了一个小时,我完全被困住了
我想对pandas.series数据(称为train_data)执行指数运行平均,然后预测未来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
您应该在此行之前定义
train_data
:因为你没有上传错误本身,我只能猜测。但我认为你的问题在于:
将pred_len添加到my_数据的长度,而不是减去一。但是你要用我的数据[pred_idx-1]来计算跑步平均值,它的数值是N,可能超出了范围。所以看起来你是在和清单上没有的东西相乘
你忘了线路上的pred_idx-1
相关问题 更多 >
编程相关推荐