预测 statsmodel 参数错误 [英] predict statsmodel argument Error
问题描述
我正在尝试预测数组的样本外值.Python代码:
I am trying to predict outofsample values for an array. Python code:
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 个.
I am getting this error.I see I have given two argument but compiler return I have given 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)
请帮忙
推荐答案
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
没有绑定.这就是为什么你得到错误
Thus, when you call r.predict(start='2012-07-31', end='2012-08-31')
, self
gets bound to r
, and values are bound to start
and end
but the required positional arument params
does not get bound. That is why you get the error
TypeError: predict() takes at least 2 arguments (3 given)
不幸的是,错误消息具有误导性.3给定"指的是r
、start
和end
.2 个参数"是指两个必需的参数,self
和 params
.问题是没有给出必需的位置参数params
.
Unfortunately the error message is misleading. The "3 given" refer to r
, start
and end
. The "2 arguments" refer to the two required arguments, self
and params
.
The problem is that the required positional argument params
was not given.
要解决问题,您需要参数.通常你通过拟合找到这些参数:
To fix the problem, you need parameters. Usually you find those parameters by fitting:
r = r.fit()
在调用之前
pred = r.predict(start='2012-07-31', end='2012-08-31')
r.fit()
返回一个 statsmodels.tsa.arima_model.ARIMAResultsWrapper
有参数烘焙"所以调用 ARIMAResultWrapper.fit
不需要传递 params
.
r.fit()
returns a statsmodels.tsa.arima_model.ARIMAResultsWrapper
which
have the parameters "baked in" so calling ARIMAResultWrapper.fit
does not require passing 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
这篇关于预测 statsmodel 参数错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!