предсказать аргумент statsmodel Ошибка

Я пытаюсь предсказать значения вне выборки для массива. Код Python:

import pandas as pd
import numpy as np
from statsmodels.tsa.arima_model import ARIMA

    dates = pd.date_range('2012-07-09','2012-07-30')
    series = [43.,32.,63.,98.,65.,78.,23.,35.,78.,56.,45.,45.,56.,6.,63.,45.,64.,34.,76.,34.,14.,54.]
    res = pd.Series(series, index=dates)
    r = ARIMA(res,(1,2,0))
    pred = r.predict(start='2012-07-31', end='2012-08-31')

Я получаю эту ошибку. Я вижу, что я дал два аргумента, но возврат компилятора я дал 3.

Traceback (most recent call last):
  File "XXXXXXXXX/testfile.py", line 12, in <module>
    pred = r.predict(start='2012-07-31', end='2012-08-31')
TypeError: predict() takes at least 2 arguments (3 given)

Пожалуйста помоги


person jokeroor    schedule 19.04.2016    source источник
comment
Сообщение об ошибке странное -- ясно, что 3 по крайней мере 2, поэтому оно не имеет особого смысла. Вы уверены, что это именно то сообщение, которое вы получаете?   -  person Frédéric Hamidi    schedule 19.04.2016
comment
Да, я уверен. Я обновил полную ошибку   -  person jokeroor    schedule 19.04.2016


Ответы (1)


Позывной ARIMA.predict

predict(self, params, start=None, end=None, exog=None, dynamic=False)

Таким образом, когда вы вызываете r.predict(start='2012-07-31', end='2012-08-31'), self привязывается к r, а значения привязываются к start и end, но требуемый позиционный аргумент params не привязывается. Вот почему вы получаете ошибку

TypeError: predict() takes at least 2 arguments (3 given)

К сожалению, сообщение об ошибке вводит в заблуждение. «3 данных» относятся к r, start и end. «2 аргумента» относятся к двум обязательным аргументам, self и params. Проблема в том, что не указан обязательный позиционный аргумент params.

Чтобы решить проблему, вам нужны параметры. Обычно вы находите эти параметры путем подгонки:

r = r.fit()

прежде чем звонить

pred = r.predict(start='2012-07-31', end='2012-08-31')

r.fit() возвращает statsmodels.tsa.arima_model.ARIMAResultsWrapper с "запеченными" параметрами, поэтому вызов ARIMAResultWrapper.fit не требует передачи params.


import pandas as pd
import numpy as np
from statsmodels.tsa.arima_model import ARIMA

dates = pd.date_range('2012-07-09','2012-07-30')
series = [43.,32.,63.,98.,65.,78.,23.,35.,78.,56.,45.,45.,56.,6.,63.,45.,64.,34.,76.,34.,14.,54.]
res = pd.Series(series, index=dates)
r = ARIMA(res,(1,2,0))
r = r.fit()
pred = r.predict(start='2012-07-31', end='2012-08-31')
print(pred)

урожаи

2012-07-31   -39.067222
2012-08-01    26.902571
2012-08-02   -17.027333
...
2012-08-29     0.532946
2012-08-30     0.532447
2012-08-31     0.532780
Freq: D, dtype: float64
person unutbu    schedule 19.04.2016