arima - 如何从最好的 auto_arima 模型中提取变量以适应它?
问题描述
我有一个包含多个城市的数据集,我正在尝试为每个城市构建一个 ARIMA 模型,因此在我的代码中,我使用 for 循环拆分数据并在将这些参数发送到最终拟合之前找到最佳模型。我的问题是如何使流程自动化?有没有办法从 ARIMACheck 函数返回的最佳模型中提取 p、d、q 值?
def ARIMACheck(data):
from pmdarima import auto_arima
fit = auto_arima(data[20], trace=True)
return fit
def ARIMA(data, p, d, q):
from statsmodels.tsa.arima.model import ARIMA
x_train = data.iloc[:-200]
x_test = data.iloc[-200:]
y_test = x_test.loc[:, 20]
model = ARIMA(x_train[20], order=(p,d,q))
model = model.fit()
def Split(data):
for i in range(7):
data[i].replace(0, np.nan, inplace=True)
for i in range(7):
datatemp = data.copy()
datatemp = datatemp.dropna(subset=[i])
datamap = datatemp.copy()
datamap = datamap.loc[:, 20]
datamap.plot(figsize=(50,10))
fit = ARIMACheck(datatemp)
print(fit)
ARIMA(datatemp, 1, 1, 2)
Split(data)
解决方案
首先,该auto_arima
函数返回一个在 statsmodels 上运行的 ARIMA 对象,因此您可以使用fit
from you 方法ARIMACheck(data)
。
如果要使用 statsmodels 类创建新模型,则可以使用以下命令从auto_arima
拟合中提取顺序,并使用它在您的ARIMA
方法中训练新模型:
def ARIMA(data, fit):
model = ARIMA(endog=x_train[20], order=fit.get_params().get("order")).fit()
并通过以下方式调用该方法:
ARIMA(datatemp, fit)
fit.get_params().get("order")
返回一个像 (p, d, q) 这样的元组,因此您可以通过fit.get_params().get("order")[<index>]
.
推荐阅读
- r - 在R中使用apply或map函数时如何将列名传递给函数?
- amazon-dynamodb - DynamoDB 版本是否不可知
- php - 继续登录会话 Fuel
- sql - 如何将列中的单个文本转换为sql中的行?
- azure-cloud-services - Azure Database for MYSQL 频繁连接失败
- flutter - 如何发送信息在颤动中抛出深层链接
- asp.net-core - 如何在布局图标中显示购物车项目
- python - 对同一文件夹中的文件进行并行处理
- reactjs - × TypeError:无法读取 null 的属性“名称”
- javascript - 关于运行 WEB Rtc 示例