传统机器学习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.结果展示
最后会显示下面这一堆
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL4MGOhdzY5YDNzQjMjNGZ5ETM3QDMiJ2N2MjNyAzNyMzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
这里会自动使用最佳模型, 当然你也可以选择划分出一个验证集,验证一下,然后再预测y_pred = model.predict(91)#预测未来九十一个值