天天看点

Auto-ARIMA实战1.代码2.重要参数 3.结果展示

传统机器学习ARIMA模型是一种随机时序分析,其实质是差分运算和ARMA模型的组合,但由于ARIMA模型需要调整的参数比较多且网格寻优速度比较慢,所以Auto-ARIMA应运而生。由于Auto-ARIMA只需自定义参数范围并自己寻找最佳参数。所以其实是比较容易实现的。但是它的预测精度其实是不如用ARIMA手动寻找的精度高的,但是由于其方便快捷,其实还是有一定的可用性。

废话不多说直接上代码

1.代码

model = pm.auto_arima(x_train["y"], start_p=1, start_q=1,
                      test='adf',       # use adftest to find optimal 'd'
                      max_p=int(len(y)/10), max_q=int(len(y)/10), # 一般都是取这个范围直接套用
                      m=1,              # frequency of series
                      d=None,           # let model determine 'd'
                      seasonal=True,   # No Seasonality
                      start_P=0, 
                      D=0, 
                      trace=True,
                      error_action='ignore',  
                      suppress_warnings=True,
                      stepwise=True )

print(model.summary())
           

2.重要参数

 解释一下比较重要的参数

首先你输入的数据一定要保证是一维数据浮点型的数据,一定不能有空值

max_p ,start_p,用来限制p的范围

trace 控制平滑 True,Flase

stepwise显示运行的过程

seasonal 季节性  

exogenous 可以添加额外的变量,这里的导入一个跟数据集一样长度的特征序列就可,但是一定要注意,你在预测时也要放入同样多的特征,否则识别不了。详细解释可以看我另一篇关于ARIMAX的博客。

d=None,会自动选择d阶差分,但是会比较慢

D=None,周期模型差分自动选择 

m=12,周期数,这个根据你自己的数据集来选,比如按照月来分析就是m=12,按照季度就是等于4,按照年的就是1,这时自动关掉seasonal

information_critertion 控制选择标准的,一般选‘aic' 或者’bic‘

 3.结果展示

 最后会显示下面这一堆

Auto-ARIMA实战1.代码2.重要参数 3.结果展示
y_pred = model.predict(91)#预测未来九十一个值
           
这里会自动使用最佳模型, 当然你也可以选择划分出一个验证集,验证一下,然后再预测