在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁(yè) > 博客 > 時(shí)序分析:Python 中的 ARIMA 模型

            時(shí)序分析:Python 中的 ARIMA 模型

            發(fā)布人:ygtu 時(shí)間:2023-08-11 來(lái)源:工程師 發(fā)布文章

            時(shí)間序列分析廣泛用于預(yù)測(cè)和預(yù)測(cè)時(shí)間序列中的未來(lái)點(diǎn)。自回歸積分移動(dòng)平均線(ARIMA)模型廣泛用于時(shí)間序列預(yù)測(cè),被認(rèn)為是最流行的方法之一。在本教程中,我們將學(xué)習(xí)如何在 Python 中構(gòu)建和評(píng)估用于時(shí)間序列預(yù)測(cè)的 ARIMA 模型。

            時(shí)序分析:Python 中的 ARIMA 模型

            推薦:使用NSDT場(chǎng)景編輯器快速助你搭建可二次編輯的3D應(yīng)用場(chǎng)景
            什么是ARIMA模型?

            ARIMA 模型是用于分析和預(yù)測(cè)時(shí)間序列數(shù)據(jù)的統(tǒng)計(jì)模型。ARIMA 方法明確迎合了時(shí)間序列中的標(biāo)準(zhǔn)結(jié)構(gòu),為制作熟練的時(shí)間序列預(yù)測(cè)提供了一種簡(jiǎn)單而強(qiáng)大的方法。

            ARIMA 代表 自回歸積分移動(dòng)平均線。它結(jié)合了三個(gè)關(guān)鍵方面:

            • 自回歸 (AR):使用當(dāng)前觀測(cè)值和滯后觀測(cè)值之間相關(guān)性的模型。滯后觀測(cè)值的數(shù)量稱為滯后順序或 p。

            • 積分(I):使用原始觀測(cè)值的差分使時(shí)間序列平穩(wěn)。差異運(yùn)算的次數(shù)稱為 d。

            • 移動(dòng)平均線 (MA):模型考慮當(dāng)前觀測(cè)值與應(yīng)用于過(guò)去觀測(cè)值的移動(dòng)平均模型的殘差之間的關(guān)系。移動(dòng)平均線窗口的大小是階數(shù)或 q。

            ARIMA 模型使用符號(hào) ARIMA(p,d,q) 定義,其中 p、d 和 q 替換為整數(shù)值以指定所使用的確切模型。

            采用 ARIMA 模型時(shí)的關(guān)鍵假設(shè):

            • 時(shí)間序列是從基礎(chǔ) ARIMA 過(guò)程生成的。

            • 參數(shù) p、d、q 必須根據(jù)原始觀測(cè)值適當(dāng)指定。

            • 在擬合 ARIMA 模型之前,必須通過(guò)差分使時(shí)間序列數(shù)據(jù)變得平穩(wěn)。

            • 殘差應(yīng)不相關(guān),如果模型擬合良好,則正態(tài)分布。

            總之,ARIMA 模型提供了一種結(jié)構(gòu)化且可配置的方法,用于為預(yù)測(cè)等目的對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行建模。接下來(lái),我們將研究在 Python 中擬合 ARIMA 模型。

            蟒蛇代碼示例

            在本教程中,我們將使用 Kaggle 的 Netflix 股票數(shù)據(jù)使用 ARIMA 模型預(yù)測(cè) Netflix 股票價(jià)格。

            數(shù)據(jù)加載

            我們將加載我們的股票價(jià)格數(shù)據(jù)集,并將“日期”列作為索引。

            import pandas as pd
            
            
            net_df = pd.read_csv("Netflix_stock_history.csv", index_col="Date", parse_dates=True)
            net_df.head(3)
            時(shí)序分析:Python 中的 ARIMA 模型數(shù)據(jù)可視化

            我們可以使用熊貓“繪圖”功能來(lái)可視化股票價(jià)格和交易量隨時(shí)間的變化。很明顯,股價(jià)呈指數(shù)級(jí)增長(zhǎng)。

            net_df[["Close","Volume"]].plot(subplots=True, layout=(2,1));
            時(shí)序分析:Python 中的 ARIMA 模型滾動(dòng)預(yù)測(cè) ARIMA 模型

            我們的數(shù)據(jù)集已拆分為訓(xùn)練集和測(cè)試集,我們繼續(xù)訓(xùn)練 ARIMA 模型。然后預(yù)測(cè)了第一個(gè)預(yù)測(cè)。

            通用ARIMA模型的結(jié)果很差,因?yàn)樗a(chǎn)生了一條平線。因此,我們決定嘗試滾動(dòng)預(yù)測(cè)方法。

            注意:代碼示例是 BOGDAN IVANYUK 筆記本的修改版本。

            from statsmodels.tsa.arima.model import ARIMA
            from sklearn.metrics import mean_squared_error, mean_absolute_error
            import math
            
            
            train_data, test_data = net_df[0:int(len(net_df)*0.9)], net_df[int(len(net_df)*0.9):]
            
            
            train_arima = train_data['Open']
            test_arima = test_data['Open']
            
            
            history = [x for x in train_arima]
            y = test_arima
            # make first prediction
            predictions = list()
            model = ARIMA(history, order=(1,1,0))
            model_fit = model.fit()
            yhat = model_fit.forecast()[0]
            predictions.append(yhat)
            history.append(y[0])

            在處理時(shí)間序列數(shù)據(jù)時(shí),由于依賴于先前的觀測(cè)值,滾動(dòng)預(yù)測(cè)通常是必要的。執(zhí)行此操作的一種方法是在收到每個(gè)新觀測(cè)值后重新創(chuàng)建模型。

            為了跟蹤所有觀察結(jié)果,我們可以手動(dòng)維護(hù)一個(gè)名為 history 的列表,該列表最初包含訓(xùn)練數(shù)據(jù),每次迭代都會(huì)附加新的觀察結(jié)果。這種方法可以幫助我們獲得準(zhǔn)確的預(yù)測(cè)模型。

            # rolling forecasts
            for i in range(1, len(y)):
                # predict
                model = ARIMA(history, order=(1,1,0))
                model_fit = model.fit()
                yhat = model_fit.forecast()[0]
                # invert transformed prediction
                predictions.append(yhat)
                # observation
                obs = y[i]
                history.append(obs)
            模型評(píng)估

            我們的滾動(dòng)預(yù)測(cè) ARIMA 模型顯示,與簡(jiǎn)單實(shí)施相比,改進(jìn)了 100%,產(chǎn)生了令人印象深刻的結(jié)果。

            # report performance
            mse = mean_squared_error(y, predictions)
            print('MSE: '+str(mse))
            mae = mean_absolute_error(y, predictions)
            print('MAE: '+str(mae))
            rmse = math.sqrt(mean_squared_error(y, predictions))
            print('RMSE: '+str(rmse))
            MSE: 116.89611817706545
            MAE: 7.690948135967959
            RMSE: 10.811850821069696

            讓我們可視化并將實(shí)際結(jié)果與預(yù)測(cè)結(jié)果進(jìn)行比較。很明顯,我們的模型已經(jīng)做出了高度準(zhǔn)確的預(yù)測(cè)。

            import matplotlib.pyplot as plt
            plt.figure(figsize=(16,8))
            plt.plot(net_df.index[-600:], net_df['Open'].tail(600), color='green', label = 'Train Stock Price')
            plt.plot(test_data.index, y, color = 'red', label = 'Real Stock Price')
            plt.plot(test_data.index, predictions, color = 'blue', label = 'Predicted Stock Price')
            plt.title('Netflix Stock Price Prediction')
            plt.xlabel('Time')
            plt.ylabel('Netflix Stock Price')
            plt.legend()
            plt.grid(True)
            plt.savefig('arima_model.pdf')
            plt.show()
            時(shí)序分析:Python 中的 ARIMA 模型結(jié)論

            在這個(gè)簡(jiǎn)短的教程中,我們概述了 ARIMA 模型以及如何在 Python 中實(shí)現(xiàn)它們以進(jìn)行時(shí)間序列預(yù)測(cè)。ARIMA 方法提供了一種靈活且結(jié)構(gòu)化的方式來(lái)對(duì)依賴于先前觀測(cè)值和過(guò)去預(yù)測(cè)誤差的時(shí)間序列數(shù)據(jù)進(jìn)行建模。如果您對(duì) ARIMA 模型和時(shí)間序列分析的全面分析感興趣,我建議您查看使用時(shí)間序列分析進(jìn)行股票市場(chǎng)預(yù)測(cè)。

            原文鏈接:時(shí)序分析:Python 中的 ARIMA 模型 (mvrlink.com)


            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



            關(guān)鍵詞: python 語(yǔ)言模型

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉