簡體   English   中英

使用 Auto_Arima 更好地擬合測試數據

[英]Get better fit on test data using Auto_Arima

我正在使用 AirPassengers 數據集來預測時間序列。 對於我正在使用的 model,我選擇使用 auto_arima 來預測預測值。 但是,auto_arima 選擇的順序似乎無法適合 model。 生成相應的圖表。

預測的

我能做些什么來獲得更好的身材?

我的代碼給那些想嘗試的人:

import pandas as pd
import numpy as np
import matplotlib.pylab as plt
%matplotlib inline

from pmdarima import auto_arima

df = pd.read_csv("https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv")
df = df.rename(columns={"#Passengers":"Passengers"})
df.Month = pd.to_datetime(df.Month)
df.set_index('Month',inplace=True)

train,test=df[:-24],df[-24:]

model = auto_arima(train,trace=True,error_action='ignore', suppress_warnings=True)
model.fit(train)

forecast = model.predict(n_periods=24)
forecast = pd.DataFrame(forecast,index = test.index,columns=['Prediction'])

plt.plot(train, label='Train')
plt.plot(test, label='Valid')
plt.plot(forecast, label='Prediction')
plt.show()

from sklearn.metrics import mean_squared_error
print(mean_squared_error(test['Passengers'],forecast['Prediction']))

感謝您的閱讀。 任何建議表示贊賞。

問題是我沒有指定m,在這種情況下,我將m的值指定為12,表示它是一個月循環,每個數據行是一個月。 我就是這么理解的。資源

隨意評論,我不完全確定,因為我是使用 ARIMA 的新手。

代碼:

model = auto_arima(train,m=12,trace=True,error_action='ignore', suppress_warnings=True)

只需加上m=12,表示數據為月度數據。

結果: 我想要的是

這個系列不是靜止的,沒有多少微分(注意變化的幅度不斷增加)會使它如此。 但是,首先通過獲取日志來轉換數據應該會做得更好(實驗表明它確實做得更好,但不是我所說的好)。 設置季節性(正如我在 m=12 的評論中建議的那樣,並記錄日志會產生以下結果: 在此處輸入圖像描述 這基本上是完美的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM