天天看點

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)#預測未來九十一個值
           
這裡會自動使用最佳模型, 當然你也可以選擇劃分出一個驗證集,驗證一下,然後再預測