<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 簡單的時間序列預測模型進行測試,這樣你就不會欺騙自己 > 原文: [https://machinelearningmastery.com/simple-time-series-forecasting-models/](https://machinelearningmastery.com/simple-time-series-forecasting-models/) 重要的是要在時間序列預測問題上建立強大的績效基準,并且不要愚弄自己認為復雜的方法是熟練的,而事實上它們并非如此。 這需要您評估一套標準的樸素或簡單的時間序列預測模型,以便了解問題的最差可接受表現,以便更復雜的模型。 應用這些簡單模型還可以發現有關可能帶來更好表現的更高級方法的新想法。 在本教程中,您將了解如何在現實世界數據集上實現和自動化三種標準基線時間序列預測方法。 具體來說,您將學到: * 如何自動化持久性模型并測試一組持久化值。 * 如何自動化擴展窗口模型。 * 如何自動化滾動窗口預測模型并測試一組窗口大小。 這是一個重要的主題,強烈推薦用于任何時間序列預測項目。 讓我們開始吧。 ## 概觀 本教程分為以下 5 個部分: 1. **每月汽車銷售數據集**:我們將使用的標準時間序列數據集的概述。 2. **測試設置**:我們將如何評估本教程中的預測模型。 3. **持久性預測**:持久性預測以及如何自動化。 4. **擴展窗口預測**:擴展窗口預測以及如何自動化。 5. **滾動窗口預測**:滾動窗口預測以及如何自動化它。 使用了最新的 Python SciPy 環境,包括 Python 2 或 3,Pandas,Numpy 和 Matplotlib。 ## 每月汽車銷售數據集 在本教程中,我們將使用 Monthly Car Sales 數據集。 該數據集描述了 1960 年至 1968 年間加拿大魁北克省的汽車銷售數量。 單位是銷售數量的計數,有 108 個觀察值。源數據歸功于 Abraham 和 Ledolter(1983)。 [您可以從 DataMarket](https://datamarket.com/data/set/22n4/monthly-car-sales-in-quebec-1960-1968) 下載數據集。 下載數據集并將其保存到當前工作目錄中,文件名為“ _car-sales.csv_ ”。請注意,您可能需要從文件中刪除頁腳信息。 下面的代碼將數據集加載為 Pandas Series 對象。 ```py # line plot of time series from pandas import Series from matplotlib import pyplot # load dataset series = Series.from_csv('car-sales.csv', header=0) # display first few rows print(series.head(5)) # line plot of dataset series.plot() pyplot.show() ``` 運行該示例將打印前 5 行數據。 ```py Month 1960-01-01 6550 1960-02-01 8728 1960-03-01 12026 1960-04-01 14395 1960-05-01 14587 Name: Sales, dtype: int64 ``` 還提供了數據的線圖。 ![Monthly Car Sales Dataset Line Plot](https://img.kancloud.cn/4f/80/4f802614dbeda4249009f10b0305644c_640x480.jpg) 每月汽車銷售數據集線圖 ## 實驗測試設置 一致地評估時間序列預測模型非常重要。 在本節中,我們將定義如何評估本教程中的三個預測模型。 首先,我們將保留最近兩年的數據,并評估對這些數據的預測。鑒于數據是每月,這意味著最后 24 個觀測值將用作測試數據。 我們將使用[前進驗證方法](http://machinelearningmastery.com/backtest-machine-learning-models-time-series-forecasting/)來評估模型表現。這意味著將枚舉測試數據集中的每個時間步,在歷史數據上構建模型,并將預測與預期值進行比較。然后將觀察結果添加到訓練數據集中并重復該過程。 前瞻性驗證是評估時間序列預測模型的現實方法,因為人們可以期望在新觀察結果可用時更新模型。 最后,將使用均方根誤差或 RMSE 評估預測。 RMSE 的好處在于它會對大錯誤進行處罰,并且得分與預測值(每月汽車銷售額)的單位相同。 總之,測試工具包括: * 最近 2 年的數據使用了測試集。 * 模型評估的前瞻性驗證。 * 用于報告模型技能的均方根誤差。 ## 優化持久性預測 持久性預測涉及使用先前的觀察來預測下一個時間步。 出于這個原因,這種方法通常被稱為樸素的預測。 為什么要停止使用之前的觀察?在本節中,我們將研究自動化持久性預測,并評估使用任意先前時間步驟來預測下一個時間步驟。 我們將在持久性模型中探索前 24 個月的點觀察中的每一個。將使用測試工具和收集的 RMSE 分數評估每個配置。然后,我們將顯示分數并繪制持久時間步長與模型技能之間的關系。 下面列出了完整的示例。 ```py from pandas import Series from sklearn.metrics import mean_squared_error from math import sqrt from matplotlib import pyplot # load data series = Series.from_csv('car-sales.csv', header=0) # prepare data X = series.values train, test = X[0:-24], X[-24:] persistence_values = range(1, 25) scores = list() for p in persistence_values: # walk-forward validation history = [x for x in train] predictions = list() for i in range(len(test)): # make prediction yhat = history[-p] predictions.append(yhat) # observation history.append(test[i]) # report performance rmse = sqrt(mean_squared_error(test, predictions)) scores.append(rmse) print('p=%d RMSE:%.3f' % (p, rmse)) # plot scores over persistence values pyplot.plot(persistence_values, scores) pyplot.show() ``` 運行該示例為每個持久點觀察打印 RMSE。 ```py p=1 RMSE:3947.200 p=2 RMSE:5485.353 p=3 RMSE:6346.176 p=4 RMSE:6474.553 p=5 RMSE:5756.543 p=6 RMSE:5756.076 p=7 RMSE:5958.665 p=8 RMSE:6543.266 p=9 RMSE:6450.839 p=10 RMSE:5595.971 p=11 RMSE:3806.482 p=12 RMSE:1997.732 p=13 RMSE:3968.987 p=14 RMSE:5210.866 p=15 RMSE:6299.040 p=16 RMSE:6144.881 p=17 RMSE:5349.691 p=18 RMSE:5534.784 p=19 RMSE:5655.016 p=20 RMSE:6746.872 p=21 RMSE:6784.611 p=22 RMSE:5642.737 p=23 RMSE:3692.062 p=24 RMSE:2119.103 ``` 還創建了持久值(t-n)與模型技能(RMSE)的關系圖。 從結果來看,顯然從 12 個月前或 24 個月前堅持觀察是這個數據集的一個很好的起點。 取得的最好成果包括堅持 t-12 的結果,車輛銷售的 RMSE 為 1997.732。 這是一個明顯的結果,但也非常有用。 我們期望預測模型是 t-12,t-24,t-36 等觀測值的一些加權組合,這將是一個強有力的起點。 它還指出,樸素的 t-1 持久性對于這個數據集來說是一個不太理想的起點。 ![Persisted Observation to RMSE on the Monthly Car Sales Dataset](https://img.kancloud.cn/ef/3e/ef3e56346a6892211903998fc38c80f9_640x480.jpg) 持續觀察 RMSE 月度汽車銷售數據集 我們可以使用 t-12 模型進行預測并根據測試數據繪制它。 下面列出了完整的示例。 ```py from pandas import Series from sklearn.metrics import mean_squared_error from math import sqrt from matplotlib import pyplot # load data series = Series.from_csv('car-sales.csv', header=0) # prepare data X = series.values train, test = X[0:-24], X[-24:] # walk-forward validation history = [x for x in train] predictions = list() for i in range(len(test)): # make prediction yhat = history[-12] predictions.append(yhat) # observation history.append(test[i]) # plot predictions vs observations pyplot.plot(test) pyplot.plot(predictions) pyplot.show() ``` 運行該示例將測試數據集(藍色)與預測值(橙色)進行對比。 ![Line Plot of Predicted Values vs Test Dataset for the t-12 Persistence Model](https://img.kancloud.cn/fc/d8/fcd827db81676d6ac31a8967ede5f790_640x480.jpg) t-12 持久性模型的預測值與測試數據集的線圖 您可以在帖子中了解有關時間序列預測的持久性模型的更多信息: * [如何使用 Python 進行時間序列預測的基線預測](http://machinelearningmastery.com/persistence-time-series-forecasting-with-python/) ## 擴大窗口預測 展開窗口是指計算所有可用歷史數據的統計數據并使用該數據進行預測的模型。 這是一個不斷擴大的窗口,因為它隨著收集更多真實觀察而增長。 要計算的兩個好的起點統計數據是平均值和中值歷史觀察值。 以下示例使用展開窗口均值作為預測。 ```py from pandas import Series from sklearn.metrics import mean_squared_error from math import sqrt from numpy import mean # load data series = Series.from_csv('car-sales.csv', header=0) # prepare data X = series.values train, test = X[0:-24], X[-24:] # walk-forward validation history = [x for x in train] predictions = list() for i in range(len(test)): # make prediction yhat = mean(history) predictions.append(yhat) # observation history.append(test[i]) # report performance rmse = sqrt(mean_squared_error(test, predictions)) print('RMSE: %.3f' % rmse) ``` 運行該示例將打印方法的 RMSE 評估。 ```py RMSE: 5113.067 ``` 我們也可以用歷史觀察的中位數重復相同的實驗。下面列出了完整的示例。 ```py from pandas import Series from sklearn.metrics import mean_squared_error from math import sqrt from numpy import median # load data series = Series.from_csv('car-sales.csv', header=0) # prepare data X = series.values train, test = X[0:-24], X[-24:] # walk-forward validation history = [x for x in train] predictions = list() for i in range(len(test)): # make prediction yhat = median(history) predictions.append(yhat) # observation history.append(test[i]) # report performance rmse = sqrt(mean_squared_error(test, predictions)) print('RMSE: %.3f' % rmse) ``` 再次,運行該示例打印模型的技能。 我們可以看到,在這個問題上,歷史均值產生了比中位數更好的結果,但兩者都比使用優化的持久性值更差。 ```py RMSE: 5527.408 ``` 我們可以根據測試數據集繪制平均擴展窗口預測,以了解預測在上下文中的實際情況。 下面列出了完整的示例。 ```py from pandas import Series from sklearn.metrics import mean_squared_error from matplotlib import pyplot from numpy import mean # load data series = Series.from_csv('car-sales.csv', header=0) # prepare data X = series.values train, test = X[0:-24], X[-24:] # walk-forward validation history = [x for x in train] predictions = list() for i in range(len(test)): # make prediction yhat = mean(history) predictions.append(yhat) # observation history.append(test[i]) # plot predictions vs observations pyplot.plot(test) pyplot.plot(predictions) pyplot.show() ``` 該圖顯示了糟糕的預測情況以及它如何不跟隨數據的變動,除了略微上升的趨勢。 ![Line Plot of Predicted Values vs Test Dataset for the Mean Expanding Window Model](https://img.kancloud.cn/bb/0c/bb0cc4371a5b5433337a980df8c5eeec_640x480.jpg) 平均擴展窗口模型的預測值與測試數據集的線圖 您可以在帖子中看到更多擴展窗口統計信息的示例: * [基于 Python 的時間序列數據的基本特征工程](http://machinelearningmastery.com/basic-feature-engineering-time-series-data-python/) ## 滾動窗口預測 滾動窗口模型涉及計算先前觀察的固定連續塊的統計量并將其用作預測。 它很像擴展窗口,但窗口大小保持固定,并從最近的觀察結果倒數。 對于時間序列問題可能更有用,其中最近的滯后值比舊的滯后值更具預測性。 我們將自動檢查 1 到 24 個月(2 年)的不同滾動窗口大小,并從計算平均觀察開始并將其用作預測。下面列出了完整的示例。 ```py from pandas import Series from sklearn.metrics import mean_squared_error from math import sqrt from matplotlib import pyplot from numpy import mean # load data series = Series.from_csv('car-sales.csv', header=0) # prepare data X = series.values train, test = X[0:-24], X[-24:] window_sizes = range(1, 25) scores = list() for w in window_sizes: # walk-forward validation history = [x for x in train] predictions = list() for i in range(len(test)): # make prediction yhat = mean(history[-w:]) predictions.append(yhat) # observation history.append(test[i]) # report performance rmse = sqrt(mean_squared_error(test, predictions)) scores.append(rmse) print('w=%d RMSE:%.3f' % (w, rmse)) # plot scores over window sizes values pyplot.plot(window_sizes, scores) pyplot.show() ``` 運行該示例將為每個配置打印滾動窗口大小和 RMSE。 ```py w=1 RMSE:3947.200 w=2 RMSE:4350.413 w=3 RMSE:4701.446 w=4 RMSE:4810.510 w=5 RMSE:4649.667 w=6 RMSE:4549.172 w=7 RMSE:4515.684 w=8 RMSE:4614.551 w=9 RMSE:4653.493 w=10 RMSE:4563.802 w=11 RMSE:4321.599 w=12 RMSE:4023.968 w=13 RMSE:3901.634 w=14 RMSE:3907.671 w=15 RMSE:4017.276 w=16 RMSE:4084.080 w=17 RMSE:4076.399 w=18 RMSE:4085.376 w=19 RMSE:4101.505 w=20 RMSE:4195.617 w=21 RMSE:4269.784 w=22 RMSE:4258.226 w=23 RMSE:4158.029 w=24 RMSE:4021.885 ``` 還會創建窗口大小與錯誤的折線圖。 結果表明,w = 13 的滾動窗口最佳,RMSE 為每月 3,901 輛汽車銷量。 ![Line Plot of Rolling Window Size to RMSE for a Mean Forecast on the Monthly Car Sales Dataset](https://img.kancloud.cn/cc/4e/cc4eaaf8dfc19eed1dc0db46375d1cf1_640x480.jpg) 滾動窗口大小到 RMSE 的線圖,用于月度汽車銷售數據集的平均預測 我們可以用中位數統計重復這個實驗。 下面列出了完整的示例。 ```py from pandas import Series from sklearn.metrics import mean_squared_error from math import sqrt from matplotlib import pyplot from numpy import median # load data series = Series.from_csv('car-sales.csv', header=0) # prepare data X = series.values train, test = X[0:-24], X[-24:] window_sizes = range(1, 25) scores = list() for w in window_sizes: # walk-forward validation history = [x for x in train] predictions = list() for i in range(len(test)): # make prediction yhat = median(history[-w:]) predictions.append(yhat) # observation history.append(test[i]) # report performance rmse = sqrt(mean_squared_error(test, predictions)) scores.append(rmse) print('w=%d RMSE:%.3f' % (w, rmse)) # plot scores over window sizes values pyplot.plot(window_sizes, scores) pyplot.show() ``` 再次運行該示例將為每個配置打印窗口大小和 RMSE。 ```py w=1 RMSE:3947.200 w=2 RMSE:4350.413 w=3 RMSE:4818.406 w=4 RMSE:4993.473 w=5 RMSE:5212.887 w=6 RMSE:5002.830 w=7 RMSE:4958.621 w=8 RMSE:4817.664 w=9 RMSE:4932.317 w=10 RMSE:4928.661 w=11 RMSE:4885.574 w=12 RMSE:4414.139 w=13 RMSE:4204.665 w=14 RMSE:4172.579 w=15 RMSE:4382.037 w=16 RMSE:4522.304 w=17 RMSE:4494.803 w=18 RMSE:4360.445 w=19 RMSE:4232.285 w=20 RMSE:4346.389 w=21 RMSE:4465.536 w=22 RMSE:4514.596 w=23 RMSE:4428.739 w=24 RMSE:4236.126 ``` 再次創建窗口大小和 RMSE 的圖。 在這里,我們可以看到,窗口大小為 w = 1,每月汽車銷售 RMSE 為 3947.200,實際上是 t-1 持久性模型,取得了最佳效果。 結果通常比優化持久性差,但優于擴展窗口模型。我們可以通過加權組合窗口觀察來想象更好的結果,這個想法導致使用 AR 和 ARIMA 等線性模型。 ![Line Plot of Rolling Window Size to RMSE for a Median Forecast on the Monthly Car Sales Dataset](https://img.kancloud.cn/cf/67/cf675fd4efbdf52a6f0a4bb04061a356_640x480.jpg) 滾動窗口大小到 RMSE 的線圖,用于月度汽車銷售數據集的中位數預測 同樣,我們可以根據實際觀察結果繪制來自更好模型(w = 13 的平均滾動窗口)的預測,以了解預測在上下文中的表現。 下面列出了完整的示例。 ```py from pandas import Series from sklearn.metrics import mean_squared_error from matplotlib import pyplot from numpy import mean # load data series = Series.from_csv('car-sales.csv', header=0) # prepare data X = series.values train, test = X[0:-24], X[-24:] # walk-forward validation history = [x for x in train] predictions = list() for i in range(len(test)): # make prediction yhat = mean(history[-13:]) predictions.append(yhat) # observation history.append(test[i]) # plot predictions vs observations pyplot.plot(test) pyplot.plot(predictions) pyplot.show() ``` 運行代碼會創建觀測線圖(藍色)與預測值(橙色)的對比。 我們可以看到模型更好地遵循數據水平,但同樣不遵循實際的上下運動。 ![Line Plot of Predicted Values vs Test Dataset for the Mean w=13 Rolling Window Model](https://img.kancloud.cn/94/6e/946ed364006fb5efc994e0678e1d0975_640x480.jpg) 預測值的線圖與平均 w = 13 滾動窗口模型的測試數據集 您可以在帖子中看到滾動窗口統計信息的更多示例: * [基于 Python 的時間序列數據的基本特征工程](http://machinelearningmastery.com/basic-feature-engineering-time-series-data-python/) ## 摘要 在本教程中,您發現了計算時間序列預測問題和方法的最差可接受表現的重要性,您可以使用這些方法確保您不會使用更復雜的方法來欺騙自己。 具體來說,你學到了: * 如何自動測試一組持久性配置。 * 如何評估擴展窗口模型。 * 如何自動測試一組滾動窗口配置。 您對基線預測方法或此帖有任何疑問嗎? 在評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看