history.append () выбрасывает «IndexError: индекс 184 выходит за пределы оси 0 с размером 184» - PullRequest
0 голосов
/ 30 октября 2018

Эта ошибка была сгенерирована history.append(observed).

Справка:

Я передал в UDF doForecast данные о цене около 460 данных о ценах, называемые «панелями».

Я импортировал MSE (Sklearn), Arima (Statsmodel) и автокорреляцию (pandas.plotting) со следующими параметрами

  • TRAIN_SIZE = 0,2
  • FORECAST_STEPS = 20

Я запустил весь код, однако он останавливается после границ;

Вот ошибка;

(1) line 142, in downloadData
    print ('date={0}, predicted={1}, expected={2}, error pct={3:.2f}%'.format(histPanelWeekly.keys()[len(history)-1],

(2) line 271, in __getitem__
    val = getitem(key)

(3) line 271, in __getitem__
    val = getitem(key)
IndexError: index 184 is out of bounds for axis 0 with size 95

> def doProjection(panel):

>     
>     closeDF = panel['Close']
>     ts = closeDF['SPY']
>     tsWeekly = ts.resample('W-MON').last()
>     values = tsWeekly.tolist()
>     trainSize = int(ts.size * TRAIN_SIZE)

    train, test = values[0:trainSize], values[trainSize:ts.size]
    history = train
    predictions = list()
    errorPcts = list()

    for t in range(len(test)):
        model = ARIMA(history, order=(2, 1, 0))
        modelFit = model.fit(disp=0)
        output = modelFit.forecast()
        predicted = output[0][0] 
        predictions.append(predicted)

        observed = test[t]
        history.append(observed)

        errorPct = (predicted-observed)/observed * 100
        errorPcts.append(errorPct)

        print ('date={0}, predicted={1}, expected={2}, error pct={3:.2f}%'.format(tsWeekly.keys()[len(history)-1],
                                                                                 predicted, observed, errorPct))

    error = mean_squared_error(test, predictions)
    print ('Test MSE: {0:.3f}'.format(error))
    pyplot.subplot(211)
    pyplot.title('Predicted vs Expected')
    pyplot.plot(test)

    def main():
    doForecast(panel)

if __name__ == '__main__':
    main()
...