偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

超完整!11 種經(jīng)典時間序列預(yù)測方法!

人工智能 機器學習
本文我們深入探討如何使用機器學習方法對 Python 的時間序列問題進行分類和預(yù)測。我們將深入研究一套經(jīng)典的時間序列預(yù)測方法,您可以在探索機器學習方法之前測試這些方法。

本文我們深入探討如何使用機器學習方法對 Python 的時間序列問題進行分類和預(yù)測。我們將深入研究一套經(jīng)典的時間序列預(yù)測方法,您可以在探索機器學習方法之前測試這些方法。

雖然傳統(tǒng)方法強調(diào)線性關(guān)系,但它們在許多情況下都是熟練且有效的。只要數(shù)據(jù)準備充分,技術(shù)設(shè)置好就會很好。

一、 概述

本文演示了 11 種不同的經(jīng)典時間序列預(yù)測方法,以及時間序列方法的對比及實踐教程。

  1.  自回歸 (AR)
  2.  移動平均線 (MA)
  3. 自回歸移動平均線 (ARMA)
  4. 自回歸綜合移動平均線 (ARIMA)
  5. 季節(jié)性自回歸綜合移動平均線 (SARIMA)
  6. 具有外生回歸的季節(jié)性自回歸積分移動平均值 (SARIMAX)
  7. 向量自回歸 (VAR)
  8. 向量自回歸移動平均 (VARMA)
  9. 具有外生回歸的向量自回歸移動平均值 (VARMAX)
  10. 簡單指數(shù)平滑 (SES)
  11. Holt Winter 指數(shù)平滑 (HWES)

每種方法都以一致的方式呈現(xiàn),包括:

  • 描述。對該技術(shù)的簡短而精確的描述。
  • Python 代碼。一個簡短的工作示例,用于在 Python 中擬合模型并進行預(yù)測。
  • 更多信息。API 和算法的參考。

對于提供的每個代碼示例,我們使用一個基本的說明性數(shù)據(jù)集。我們理解它可能并不總是適合重點方法,因此我們建議您用您的數(shù)據(jù)替換人為的數(shù)據(jù)集,以測試該方法。

請記住:定制每種方法都需要針對您的具體問題進行調(diào)整。在許多情況下,我已經(jīng)在博客上提供了如何配置甚至網(wǎng)格搜索參數(shù)的示例,請嘗試搜索功能。

如果本指南被證明是有益的,請在下面的評論部分分享您的想法。

自回歸 (AR)

自回歸 (AR) 方法使用先前觀測值的線性組合來預(yù)測序列中的后續(xù)值。

模型的符號涉及將模型 p 的順序指定為 AR 函數(shù)的參數(shù),例如 AR(p)。例如,AR(1) 是一個一階自回歸模型。

該方法最適合缺乏趨勢和季節(jié)性分量的單變量時間序列。

Python 代碼


# AR example
from statsmodels.tsa.ar_model import AutoReg
from random import random
# contrived dataset
data = [x + random() for x in range(1, 100)]
# fit model
model = AutoReg(data, lags=1)
model_fit = model.fit()
# make prediction
yhat = model_fit.predict(len(data), len(data))
print(yhat)

移動平均線 (MA)

移動平均 (MA) 方法模型將序列中的下一步預(yù)測為先前時間步長中平均過程殘余誤差的線性函數(shù)。

需要注意的是,移動平均線模型不同于計算時間序列的移動平均線。

模型的符號涉及將模型 q 的順序指定為 MA 函數(shù)的參數(shù),例如 MA(q)。例如,MA(1) 是一個一階移動平均模型。

該方法適用于沒有趨勢和季節(jié)分量的單變量時間序列。

我們可以使用 ARIMA 類來創(chuàng)建 MA 模型并設(shè)置零階 AR 模型。我們必須在 order 參數(shù)中指定 MA 模型的順序。

Python 代碼

我們可以使用 ARIMA 類來創(chuàng)建 MA 模型并設(shè)置零階 AR 模型。我們必須在 order 參數(shù)中指定 MA 模型的順序。

# MA example

from statsmodels.tsa.arima.model import ARIMA

from random import random

# contrived dataset

data = [x + random() for x in range(1, 100)]

# fit model

model = ARIMA(data, order=(0, 0, 1))

model_fit = model.fit()

# make prediction

yhat = model_fit.predict(len(data), len(data))

print(yhat)

自回歸移動平均線 (ARMA)

自回歸移動平均 (ARMA) 方法模型基于過去觀測值和過去殘差的線性組合來預(yù)測序列中的下一步。

該方法結(jié)合了自回歸 (AR) 和移動平均 (MA) 模型。

為了表示模型,符號涉及將 AR(p) 和 MA(q) 模型的順序指定為 ARMA 函數(shù)的參數(shù),例如 ARMA(p, q)。ARIMA 模型可用于開發(fā) AR 或 MA 模型。

該方法適用于沒有趨勢和季節(jié)分量的單變量時間序列。

Python 代碼


# ARMA example

from statsmodels.tsa.arima.model import ARIMA

from random import random

# contrived dataset

data = [random() for x in range(1, 100)]

# fit model

model = ARIMA(data, order=(2, 0, 1))

model_fit = model.fit()

# make prediction

yhat = model_fit.predict(len(data), len(data))

print(yhat)

更多信息

  • 維基百科上的自回歸-移動平均模型

自回歸綜合移動平均線 (ARIMA)

自回歸綜合移動平均 (ARIMA) 方法模型將序列中的下一步預(yù)測為先前時間步長的差分觀測值和殘差誤差的線性函數(shù)。

該方法集成了自回歸 (AR) 和移動平均 (MA) 模型的原理以及序列的差分預(yù)處理步驟,使序列靜止,稱為積分 (I)。

模型的符號涉及將 AR(p)、I(d) 和 MA(q) 模型的順序指定為 ARIMA 函數(shù)的參數(shù),例如 ARIMA(p, d, q)。ARIMA 模型還可用于開發(fā) AR、MA 和 ARMA 模型。

ARIMA 方法最適合表現(xiàn)出趨勢但缺乏季節(jié)性變化的單變量時間序列。

Python 代碼

# ARIMA example

from statsmodels.tsa.arima.model import ARIMA

from random import random

# contrived dataset

data = [x + random() for x in range(1, 100)]

# fit model

model = ARIMA(data, order=(1, 1, 1))

model_fit = model.fit()

# make prediction

yhat = model_fit.predict(len(data), len(data), typ='levels')

print(yhat)

更多信息

  • 維基百科上的自回歸綜合移動平均線

季節(jié)性自回歸綜合移動平均線 (SARIMA)

季節(jié)性自回歸綜合移動平均 (SARIMA) 方法基于差異觀測值、誤差、差異季節(jié)性觀測值和先前時間步長的季節(jié)性誤差的線性混合,對序列中的下一步進行建模。

SARIMA 增強了 ARIMA 模型,使其能夠在季節(jié)性水平上執(zhí)行相同的自回歸、差分和移動平均建模。

該模型的符號涉及指定 AR(p)、I(d) 和 MA(q) 模型的順序作為 ARIMA 函數(shù)的參數(shù),以及季節(jié)性水平的 AR(P)、I(D)、MA(Q) 和 m 參數(shù),例如 SARIMA(p, d, q)(P, D, Q)m,其中“m”是每個季節(jié)(季節(jié)周期)的時間步長數(shù)。SARIMA 模型可用于開發(fā) AR、MA、ARMA 和 ARIMA 模型。

該方法適用于具有趨勢和/或季節(jié)性分量的單變量時間序列。

Python 代碼


# SARIMA example

from statsmodels.tsa.statespace.sarimax import SARIMAX

from random import random

# contrived dataset

data = [x + random() for x in range(1, 100)]

# fit model

model = SARIMAX(data, order=(1, 1, 1), seasonal_order=(0, 0, 0, 0))

model_fit = model.fit(disp=False)

# make prediction

yhat = model_fit.predict(len(data), len(data))

print(yhat)

更多信息

  • statsmodels.tsa.statespace.sarimax.SARIMAX API 接口
  • statsmodels.tsa.statespace.sarimax.SARIMAXResults API
  • 維基百科上的自回歸綜合移動平均線

具有外生回歸的季節(jié)性自回歸積分移動平均值 (SARIMAX)

具有外生回歸的季節(jié)性自回歸綜合移動平均值 (SARIMAX) 是 SARIMA 模型的擴展,其中還包括外生變量的建模。

外生變量也稱為協(xié)變量,可以將其視為具有與原始序列相同的時間步長的觀測值的并行輸入序列。初級序列可以稱為內(nèi)源性數(shù)據(jù),以將其與外源序列進行對比。外生變量的觀測值在每個時間步直接包含在模型中,并且以與主要內(nèi)生序列相同的方式建模(例如,作為 AR、MA 等過程)。

SARIMAX 方法還可用于對具有外生變量(如 ARX、MAX、ARMAX 和 ARIMAX)的歸入模型進行建模。

該方法適用于具有趨勢和/或季節(jié)成分以及外生變量的單變量時間序列。

Python 代碼

# SARIMAX example

from statsmodels.tsa.statespace.sarimax import SARIMAX

from random import random

# contrived dataset

data1 = [x + random() for x in range(1, 100)]

data2 = [x + random() for x in range(101, 200)]

# fit model

model = SARIMAX(data1, exog=data2, order=(1, 1, 1), seasonal_order=(0, 0, 0, 0))

model_fit = model.fit(disp=False)

# make prediction

exog2 = [200 + random()]

yhat = model_fit.predict(len(data1), len(data1), exog=[exog2])

print(yhat)

更多信息

  • statsmodels.tsa.statespace.sarimax.SARIMAX API 接口
  • statsmodels.tsa.statespace.sarimax.SARIMAXResults API
  • 維基百科上的自回歸綜合移動平均線

向量自回歸 (VAR)

向量自回歸 (VAR) 方法使用 AR 模型方法對每個時間序列中的下一步進行建模。從本質(zhì)上講,它擴展了 AR 模型以迎合多個并行時間序列,例如多變量時間序列。

模型的符號涉及將 AR(p) 模型的順序指定為 VAR 函數(shù)的參數(shù),例如 VAR(p)。

該方法適用于沒有趨勢和季節(jié)分量的多變量時間序列。

Python 代碼

from statsmodels.tsa.vector_ar.var_model import VAR
from random import random
# contrived dataset with dependency
data = list()
for i in range(100):
    v1 = i + random()
    v2 = v1 + random()
    row = [v1, v2]
    data.append(row)
# fit model
model = VAR(data)
model_fit = model.fit()
# make prediction
yhat = model_fit.forecast(model_fit.y, steps=1)
print(yhat)

更多信息

  • statsmodels.tsa.vector_ar.var_model。VAR API
  • statsmodels.tsa.vector_ar.var_model。VARResults API
  • 維基百科上的向量自回歸

向量自回歸移動平均 (VARMA)

向量自回歸移動平均 (VARMA) 方法利用 ARMA 模型方法對多個時間序列中即將到來的值進行建模。它是ARMA對多個并行時間序列的推廣,例如多變量時間序列。

模型的符號涉及將 AR(p) 和 MA(q) 模型的順序指定為 VARMA 函數(shù)的參數(shù),例如 VARMA(p, q)。VARMA 模型還可用于開發(fā) VAR 或 VMA 模型。

該方法適用于沒有趨勢和季節(jié)分量的多變量時間序列。

Python 代碼

更多信息

  • statsmodels.tsa.statespace.varmax.VARMAX 接口
  • statsmodels.tsa.statespace.varmax.VARMAXResults
  • 維基百科上的向量自回歸

具有外生回歸的向量自回歸移動平均值 (VARMAX)

具有外生回歸的向量自回歸移動平均值 (VARMAX) 擴展了 VARMA 模型的功能,其中還包括外生變量的建模。它是 ARMAX 方法的多變量版本。

外生變量,也稱為協(xié)變量,可以認為是與原始序列的時間步長對齊的并行輸入序列。主要系列被稱為內(nèi)源性數(shù)據(jù),以將其與外源序列進行對比。外生變量的觀測值在每個時間步直接包含在模型中,并且以與主要內(nèi)生序列相同的方式建模(例如,作為 AR、MA 等過程)。

VARMAX 方法還可用于對具有外生變量(如 VARX 和 VMAX)的歸和模型進行建模。

該方法適用于無趨勢的多變量時間序列和具有外生變量的季節(jié)分量。

Python 代碼

# VARMAX example

from statsmodels.tsa.statespace.varmax import VARMAX

from random import random

# contrived dataset with dependency

data = list()

for i in range(100):

    v1 = random()

    v2 = v1 + random()

    row = [v1, v2]

    data.append(row)

data_exog = [x + random() for x in range(100)]

# fit model

model = VARMAX(data, exog=data_exog, order=(1, 1))

model_fit = model.fit(disp=False)

# make prediction

data_exog2 = [[100]]

yhat = model_fit.forecast(exog=data_exog2)

print(yhat)

更多信息

  • statsmodels.tsa.statespace.varmax.VARMAX 接口
  • statsmodels.tsa.statespace.varmax.VARMAXResults
  • 維基百科上的向量自回歸

簡單指數(shù)平滑 (SES)

簡單指數(shù)平滑 (SES) 方法將下一個時間步長建模為先前時間步長觀測值的指數(shù)加權(quán)線性函數(shù)。

該方法適用于沒有趨勢和季節(jié)分量的單變量時間序列。

Python 代碼

# SES example

from statsmodels.tsa.holtwinters import SimpleExpSmoothing

from random import random

# contrived dataset

data = [x + random() for x in range(1, 100)]

# fit model

model = SimpleExpSmoothing(data)

model_fit = model.fit()

# make prediction

yhat = model_fit.predict(len(data), len(data))

print(yhat)

更多信息

  • statsmodels.tsa.holtwinters.SimpleExpSmoothing API 接口
  • statsmodels.tsa.holtwinters.HoltWinters結(jié)果 API
  • 維基百科上的指數(shù)平滑

Holt Winter 指數(shù)平滑 (HWES)

Holt Winter's Exponential Smoothing (HWES) 也稱為三重指數(shù)平滑方法,將下一個時間步長建模為先前時間步長觀測值的指數(shù)加權(quán)線性函數(shù),同時考慮趨勢和季節(jié)性。

該方法適用于具有趨勢和/或季節(jié)性分量的單變量時間序列。

Python 代碼

# HWES example

from statsmodels.tsa.holtwinters import ExponentialSmoothing

from random import random

# contrived dataset

data = [x + random() for x in range(1, 100)]

# fit model

model = ExponentialSmoothing(data)

model_fit = model.fit()

# make prediction

yhat = model_fit.predict(len(data), len(data))

print(yhat)

二、時間序列方法對比及實踐

在這里,我們將看看時間序列預(yù)測的例子,以及如何建立ARMA、ARIMA和SARIMA模型,對比特幣(BTC)的未來價格進行時間序列預(yù)測。

讀取和顯示 BTC 時間序列數(shù)據(jù)

我們將首先使用 Pandas 數(shù)據(jù)讀取器讀取 BTC 的歷史價格。讓我們在終端中使用一個簡單的 pip 命令來安裝它:

pip install pandas-datareader

讓我們打開一個 Python 腳本,并從 Pandas 庫中導入數(shù)據(jù)讀取器:

import pandas_datareader.data as web
import datetime

我們還導入 Pandas 庫本身,并放寬對列和行的顯示限制:

import pandas as pd 
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

現(xiàn)在,我們可以導入日期時間庫,這將允許我們定義數(shù)據(jù)提取的開始和結(jié)束日期:

import datetime

現(xiàn)在我們已經(jīng)掌握了提取比特幣價格時間序列數(shù)據(jù)所需的一切,讓我們收集數(shù)據(jù)。

import pandas_datareader as web 

btc = web.get_data_yahoo(['BTC-USD'], start=datetime.datetime(2018, 1, 1), end=datetime.datetime(2020, 12, 2))['Close']

print(btc.head())

我們看到我們的數(shù)據(jù)框包含許多列。讓我們來看看這些列中的每一個的含義。

  1. 日期:這是我們時間序列中的索引,用于指定與價格關(guān)聯(lián)的日期。
  2. 收盤價:當天購買BTC的最后價格。
  3. 開盤價:當天購買BTC的第一個價格。
  4. 最高價:當天購買BTC的最高價格。
  5. 最低價:當天購買BTC的最低價格。
  6. 交易量:當天的總交易次數(shù)。
  7. 調(diào)整收盤價:根據(jù)股息和股票分割調(diào)整后的收盤價。

我們將使用收盤價作為預(yù)測模型。具體來說,我們將使用歷史收盤價 BTC 來預(yù)測未來的 BTC 價格。

讓我們將收盤價 BTC 數(shù)據(jù)寫入 csv 文件。這樣,我們就可以避免使用 Pandas 數(shù)據(jù)讀取器重復(fù)提取數(shù)據(jù)。

btc.to_csv("btc.csv")

現(xiàn)在,讓我們閱讀 csv 文件并顯示前五行:

btc = pd.read_csv("btc.csv")
print(btc.head())

為了使用統(tǒng)計庫提供的模型,我們需要將日期列設(shè)置為數(shù)據(jù)框索引。我們還應(yīng)該使用 to_datetime 方法格式化該日期:

btc.index = pd.to_datetime(btc['Date'], format='%Y-%m-%d')

讓我們顯示我們的數(shù)據(jù)框:

del btc['Date']

讓我們繪制我們的時間序列數(shù)據(jù)。為此,讓我們導入數(shù)據(jù)可視化庫 Seaborn 和 Matplotlib:

import matplotlib.pyplot as plt
import seaborn as sns

讓我們使用 Seaborn 格式化可視化:

sns.set()

并使用 Matplotlib 標記 y 軸和 x 軸。我們還將在 x 軸上旋轉(zhuǎn)日期,以便它們更易于閱讀:

plt.ylabel('BTC Price')
plt.xlabel('Date')
plt.xticks(rotatinotallow=45)

最后,使用 Matplotlib 生成我們的圖:

plt.plot(btc.index, btc['BTC-USD'], )

現(xiàn)在我們可以繼續(xù)構(gòu)建我們的第一個時間序列模型,即自回歸移動平均線。

拆分數(shù)據(jù)進行訓練和測試

模型構(gòu)建的一個重要部分是拆分我們的數(shù)據(jù)以進行訓練和測試,這可確保構(gòu)建一個可以在訓練數(shù)據(jù)之外泛化的模型,并且性能和輸出具有統(tǒng)計意義。

我們將拆分數(shù)據(jù),使 2020 年 11 月之前的所有內(nèi)容都作為訓練數(shù)據(jù),而 2020 年之后的所有內(nèi)容都將成為測試數(shù)據(jù):

train = btc[btc.index < pd.to_datetime("2020-11-01", format='%Y-%m-%d')]
test = btc[btc.index > pd.to_datetime("2020-11-01", format='%Y-%m-%d')]

plt.plot(train, color = "black")
plt.plot(test, color = "red")
plt.ylabel('BTC Price')
plt.xlabel('Date')
plt.xticks(rotatinotallow=45)
plt.title("Train/Test split for BTC Data")
plt.show()


自回歸移動平均線 (ARMA)

ARMA 中的術(shù)語“自回歸”意味著模型使用過去的值來預(yù)測未來的值。具體而言,預(yù)測值是過去值的加權(quán)線性組合。這種類型的回歸方法類似于線性回歸,不同之處在于此處的特征輸入是歷史值。

移動平均是指由白噪聲項的加權(quán)線性組合表示的預(yù)測,其中白噪聲是隨機信號。這里的想法是,ARMA使用過去值和白噪聲的組合來預(yù)測未來的值。自回歸對市場參與者的行為進行建模,例如買賣BTC。白噪聲模型震撼了戰(zhàn)爭、經(jīng)濟衰退和政治事件等事件。

我們可以使用 SARIMAX 軟件包定義 ARMA 模型:

from statsmodels.tsa.statespace.sarimax import SARIMAX

 讓我們定義我們的輸入:

y = train['BTC-USD']

然后讓我們定義我們的模型。為了定義一個帶有 SARIMAX 類的 ARMA 模型,我們傳入了 (1, 0 ,1) 的階數(shù)參數(shù)。Alpha 對應(yīng)于我們預(yù)測的顯著性水平。通常,我們選擇 alpha = 0.05。在這里,ARIMA 算法計算預(yù)測周圍的上限和下限,因此實際值有 5% 的可能性超出上限和下限。這意味著有 95% 的置信度認為實際值將介于我們預(yù)測的上限和下限之間。

ARMAmodel = SARIMAX(y, order = (1, 0, 1))

然后,我們可以擬合我們的模型:

ARMAmodel = ARMAmodel.fit()

生成我們的預(yù)測:

y_pred = ARMAmodel.get_forecast(len(test.index))
y_pred_df = y_pred.conf_int(alpha = 0.05) 
y_pred_df["Predictions"] = ARMAmodel.predict(start = y_pred_df.index[0], end = y_pred_df.index[-1])
y_pred_df.index = test.index
y_pred_out = y_pred_df["Predictions"]

并繪制結(jié)果:

plt.plot(y_pred_out, color='green', label = 'Predictions')
plt.legend()

我們還可以使用均方根誤差來評估性能:

import numpy as np
from sklearn.metrics import mean_squared_error

arma_rmse = np.sqrt(mean_squared_error(test["BTC-USD"].values, y_pred_df["Predictions"]))
print("RMSE: ",arma_rmse)

RMSE相當高,我們可以在檢查地塊時猜到這一點。不幸的是,當價格實際上漲時,該模型預(yù)測價格會下降。同樣,ARMA 的局限性在于它無法用于非平穩(wěn)時間序列,并且無法捕獲季節(jié)性。讓我們看看我們是否可以使用 ARIMA 模型提高性能。

自回歸綜合移動平均線 (ARIMA)

讓我們從統(tǒng)計庫導入 ARIMA 包:

from statsmodels.tsa.arima.model import ARIMA

ARIMA 任務(wù)有三個參數(shù)。第一個參數(shù)對應(yīng)于滯后(過去的值),第二個參數(shù)對應(yīng)于差分(這就是使非平穩(wěn)數(shù)據(jù)平穩(wěn)的原因),最后一個參數(shù)對應(yīng)于白噪聲(用于模擬沖擊事件)。

讓我們定義一個帶有階參數(shù) (2,2,2) 的 ARIMA 模型:

ARIMAmodel = ARIMA(y, order = (2, 2, 2))
ARIMAmodel = ARIMAmodel.fit()

y_pred = ARIMAmodel.get_forecast(len(test.index))
y_pred_df = y_pred.conf_int(alpha = 0.05) 
y_pred_df["Predictions"] = ARIMAmodel.predict(start = y_pred_df.index[0], end = y_pred_df.index[-1])
y_pred_df.index = test.index
y_pred_out = y_pred_df["Predictions"] 
plt.plot(y_pred_out, color='Yellow', label = 'ARIMA Predictions')
plt.legend()


import numpy as np
from sklearn.metrics import mean_squared_error

arma_rmse = np.sqrt(mean_squared_error(test["BTC-USD"].values, y_pred_df["Predictions"]))
print("RMSE: ",arma_rmse)

我們看到 ARIMA 預(yù)測(黃色)位于 ARMA 預(yù)測之上。讓我們嘗試將差異參數(shù)增加到 ARIMA (2,3,2):

我們看到這有助于捕捉價格上漲的方向。讓我們嘗試使用 ARIMA(5,4,2) 進一步使用參數(shù):

我們的 RMSE 為 793,比 ARMA 好。另一種方法是根據(jù)時間特征(如周、月和年)訓練線性回歸模型。這種方法是有限的,因為它不能像 ARIMA 方法那樣捕獲自回歸和移動平均特征。此外,ARIMA 根據(jù)去趨勢滯后目標值訓練回歸器,而不是線性回歸等自變量。話雖如此,ARIMA的表現(xiàn)可能會優(yōu)于在獨立時間變量上訓練的線性回歸模型。

最后,讓我們看看包含季節(jié)性的SARIMA是否會進一步提高性能。

季節(jié)性 ARIMA (SARIMA)

季節(jié)性 ARIMA 捕捉歷史價值、沖擊事件和季節(jié)性。我們可以使用 SARIMAX 類定義一個 SARIMA 模型:

SARIMAXmodel = SARIMAX(y, order = (5, 4, 2), seasonal_order=(2,2,2,12))
SARIMAXmodel = SARIMAXmodel.fit()

y_pred = SARIMAXmodel.get_forecast(len(test.index))
y_pred_df = y_pred.conf_int(alpha = 0.05) 
y_pred_df["Predictions"] = SARIMAXmodel.predict(start = y_pred_df.index[0], end = y_pred_df.index[-1])
y_pred_df.index = test.index
y_pred_out = y_pred_df["Predictions"] 
plt.plot(y_pred_out, color='Blue', label = 'SARIMA Predictions')
plt.legend()

在這里,我們的 RMSE 為 966,比 ARIMA 略差。這可能是由于缺乏超參數(shù)優(yōu)化。如果我們對 SARIMA 模型的參數(shù)進行調(diào)整,我們應(yīng)該能夠進一步提高性能。

我鼓勵您嘗試使用超參數(shù),看看是否可以構(gòu)建一個性能優(yōu)于 ARIMA 的 SARIMA 模型。此外,您可以采用網(wǎng)格搜索等方法通過算法找到每個模型的最佳參數(shù)。

總結(jié)

在這篇文章中,你發(fā)現(xiàn)了一套經(jīng)典的時間序列預(yù)測方法,你可以在時間序列數(shù)據(jù)集上測試和調(diào)整這些方法。這些方法專為各種時序數(shù)據(jù)集而設(shè)計,可用于在各種方案和行業(yè)中實現(xiàn)它們。無論您是在處理股票市場趨勢、天氣預(yù)報還是銷售預(yù)測,這些方法都可以提供有價值的預(yù)測。

責任編輯:華軒 來源: 數(shù)據(jù)分析及應(yīng)用
相關(guān)推薦

2024-10-24 16:46:41

2023-01-24 17:14:59

2024-05-09 16:23:14

2021-12-09 15:37:50

自動駕駛數(shù)據(jù)人工智能

2024-06-27 16:38:57

2023-02-21 14:58:12

間序列周期數(shù)據(jù)集

2024-07-18 13:13:58

2025-01-14 13:32:47

2021-07-02 10:05:45

PythonHot-winters指數(shù)平滑

2021-07-01 21:46:30

PythonHot-Winters數(shù)據(jù)

2023-10-13 15:34:55

時間序列TimesNet

2021-04-07 10:02:00

XGBoostPython代碼

2023-07-05 07:21:34

時間序列學習框架模型

2023-07-19 15:28:10

時間序列分析季節(jié)性

2022-08-16 09:00:00

機器學習人工智能數(shù)據(jù)庫

2023-03-16 18:09:00

機器學習數(shù)據(jù)集

2023-03-16 07:27:30

CnosDB數(shù)據(jù)庫

2023-01-30 17:10:23

DeepTime元學習

2017-11-20 11:51:40

KerasLSTM深度學習

2024-11-15 15:20:00

模型數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號