如何从pmdarima的pipe.fit()中获取AIC、BIC等最优估计值
如何从pmdarima Pipeline中提取AIC、BIC等最优估计值?
嘿,我来帮你搞定这个问题!你已经用pmdarima的Pipeline拟合了带傅里叶特征的AutoARIMA模型,现在想把AIC、BIC这些关键指标从模型里提取出来,而不是只看pipe.summary()的文本输出对吧?其实不用去解析summary的字符串,模型本身就把这些值存在可直接访问的属性和方法里,我给你一步步说:
第一步:获取Pipeline中的AutoARIMA模型实例
你的Pipeline最后一步命名为arima,所以可以通过named_steps属性直接拿到这个模型对象:
arima_model = pipe.named_steps['arima']
第二步:提取AIC、BIC等指标
pmdarima的AutoARIMA对象提供了两种方式获取这些信息准则值:
方式1:使用快捷方法(推荐)
AutoARIMA封装了直接返回指标的方法,调用起来很方便:
# 获取AIC值 aic = arima_model.aic() # 获取BIC值 bic = arima_model.bic() # 获取HQIC值(如果需要的话) hqic = arima_model.hqic()
方式2:访问底层statsmodels模型的属性
AutoARIMA的model_属性对应着底层拟合好的statsmodels ARIMA模型,你也可以直接访问它的属性来获取指标:
# 从statsmodels模型中获取AIC aic_from_model = arima_model.model_.aic # 获取BIC bic_from_model = arima_model.model_.bic
完整示例代码
把这些整合起来,你可以这样写:
import pmdarima as pm from sklearn.pipeline import Pipeline from pmdarima.preprocessing import FourierFeaturizer # 假设y_train和X_train已经定义好 pipe = Pipeline([ ("fourier", FourierFeaturizer(m=12, k=4)), ("arima", pm.AutoARIMA(start_p=1, d=None, start_q=1, max_p=4, max_d=3, max_q=4, start_P=1, D=None, start_Q=1, max_P=2, max_D=1, max_Q=2, max_order=10, m=12, seasonal=False, stationary=False, information_criterion='aic', alpha=0.05, )) ]) pipe.fit(y_train,X_train) # 提取指标 arima_model = pipe.named_steps['arima'] aic_value = arima_model.aic() bic_value = arima_model.bic() print(f"最优模型AIC值: {aic_value:.4f}") print(f"最优模型BIC值: {bic_value:.4f}")
小提示
比起从pipe.summary()的文本里去解析这些值,直接访问模型的属性或方法要可靠得多——毕竟summary的输出格式可能会随pmdarima版本变化,而模型的API属性和方法会保持稳定。
内容的提问来源于stack exchange,提问作者Maddy
相关产品推荐
相关产品推荐

