<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/reframe-time-series-forecasting-problem/](https://machinelearningmastery.com/reframe-time-series-forecasting-problem/) 您不必按原樣建立時間序列預測問題的模型。 有許多方法可以重新構建您的預測問題,既可以簡化預測問題,又可能會暴露更多或不同的信息進行建模。重構最終可以產生更好和/或更穩健的預測。 在本教程中,您將了解如何使用 Python 重新構建時間序列預測問題。 完成本教程后,您將了解: * 如何將時間序列預測問題重新定義為備用回歸問題。 * 如何將時間序列預測問題重新定義為分類預測問題。 * 如何使用其他時間范圍重新構建時間序列預測問題。 讓我們開始吧。 ![How to Reframe Your Time Series Forecasting Problem](https://img.kancloud.cn/1a/25/1a2536427c8e022e3a69c1f3220f5d73_640x480.jpg) 如何重構您的時間序列預測問題 照片由 [Sean MacEntee](https://www.flickr.com/photos/smemon/14373987202/) ,保留一些權利。 ## 重塑問題的好處 重新定義您的問題是探索對預測內容的替代觀點。 探索時間序列預測問題的備用框架有兩個潛在的好處: 1. 簡化您的問題。 2. 提供集合預測的基礎。 這兩種好處最終都會導致更加熟練和/或更強大的預測。 ### 1.簡化您的問題 也許預測項目中最大的勝利可能來自重構問題。 這是因為預測問題的結構和類型比數據變換的選擇,模型的選擇或模型超參數的選擇具有更大的影響。 它是項目中最大的杠桿,必須仔細考慮。 ### 2.集合預報 除了改變您正在處理的問題之外,重構還起到了另一個作用:它可以為您提供一組可以建模的不同但高度相關的問題。 這樣做的好處是框架可能不同,需要在數據準備和建模方法上有所不同。 對同一問題的不同觀點的模型可以從輸入中捕獲不同的信息,并且反過來導致熟練的預測,但是以不同的方式。這些預測可以在整體中組合以產生更熟練或更強大的預測。 在本教程中,我們將探討您可以考慮重構時間序列預測問題的三種不同方法。 在我們深入研究之前,讓我們看一個簡單的單變量時間序列問題,即預測每日最低溫度作為討論的背景。 ## 最低每日溫度數據集 該數據集描述了澳大利亞墨爾本市 10 年(1981-1990)的最低日常溫度。 單位為攝氏度,有 3,650 個觀測值。數據來源被稱為澳大利亞氣象局。 [了解有關數據市場](https://datamarket.com/data/set/2324/daily-minimum-temperatures-in-melbourne-australia-1981-1990)上數據集的更多信息。 使用文件名“ _daily-minimum-Temperats.sv_ ”將最低每日溫度下載到當前工作目錄。 **注意**:下載的文件包含一些問號(“?”)字符,必須先將其刪除才能使用數據集。在文本編輯器中打開文件并刪除“?”字符。同時刪除文件中的任何頁腳信息。 下面的示例將數據集加載為 Pandas 系列。 ```py from pandas import Series from matplotlib import pyplot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) print(series.head()) series.plot() pyplot.show() ``` 運行該示例將打印已加載數據集的前 5 行。 ```py Date Temperature 1981-01-01 20.7 1981-01-02 17.9 1981-01-03 18.8 1981-01-04 14.6 1981-01-05 15.8 ``` 還創建了時間序列的線圖。 ![Minimum Daily Temperature Dataset](https://img.kancloud.cn/4f/30/4f30c95f7611e9a7bbbb080410ec5623_800x600.jpg) 最低每日溫度數據集 ## 樸素的時間序列預測 樸素的方法是按原樣預測問題。 作為參考,我們將這稱為樸素的時間序列預測。 在這種情況下,可以刪除季節性信息以使序列季節性靜止。 然后可以基于滯后觀察的一些函數來建模時間序列。 例如: ```py Temp(t+1) = B0 + B1*Temp(t-1) + B2*Temp(t-2) ... Bn*Temp(t-n) ``` 其中 _Temp(t + 1)_ 是預測序列中的下一個溫度, _B0_ 到 _Bn_ 是從訓練數據和 _Temp( t-1)_ 至 _Temp(tn)_ 是滯后觀察。 這可能是很好的甚至是許多問題所要求的。 風險在于,如何構建問題的先入為主的想法影響了數據收集,反過來可能限制了結果。 ## 回歸框架 大多數時間序列預測問題是回歸問題,需要預測實值輸出。 以下是 5 種不同的方法,可以將此預測問題重新表述為替代回歸問題: * 預測與前一天相比最低溫度的變化。 * 預測相對于過去 14 天平均值的最低溫度。 * 預測相對于去年同月平均值的最低溫度。 * 預測最低溫度四舍五入到最接近的 5 攝氏度。 * 預測未來 7 天的平均最低溫度。 使溫度相對是一個線性變換,可能不會使問題更簡單,更容易預測,但它可能會動搖新的想法,甚至可能會考慮新的數據來源。 它還可以幫助您更清楚地思考預測的準確性以及預測值的實際要求。 轉換預測問題的粒度確實會改變問題的難度,并且如果問題的要求允許這樣的重新定義,則非常有用。 下面是重新設定最低每日溫度預測問題的示例,以預測每日溫度四舍五入到最接近的 5 度。 ```py from pandas import Series from pandas import DataFrame from pandas import concat from math import floor # load data series = Series.from_csv('daily-minimum-temperatures.csv', header=0) # Create lagged dataset values = DataFrame(series.values) dataframe = concat([values.shift(1), values], axis=1) dataframe.columns = ['t-1', 't+1'] # round forecast to nearest 5 for i in range(len(dataframe['t+1'])): dataframe['t+1'][i] = int(dataframe['t+1'][i] / 5) * 5.0 print(dataframe.head(5)) ``` 運行該示例將打印重構問題的前 5 行。 該問題定義為前一天的最低溫度,以攝氏度為單位,最小值為最接近的 5 度。 ```py t-1 t+1 0 NaN 20.0 1 20.7 15.0 2 17.9 15.0 3 18.8 10.0 4 14.6 15.0 ``` ## 分類框架 分類涉及預測分類或標簽輸出(如“熱”和“冷”)。 以下是將此預測問題重新定義為分類問題的 5 種不同方式: * 預測最低溫度是冷,中溫還是暖。 * 預測最低溫度的變化是小還是大。 * 預測最低溫度是否為每月最低溫度。 * 預測最低值是高于還是低于上一年的最低值。 * 預測未來 7 天的最低溫度是上升還是下降。 轉向分類可以簡化預測問題。 這種方法打開了標簽和二進制分類框架的想法。 輸出變量的原生回歸表示意味著大多數分類框架可能保持序數結構(例如冷,中,熱)。意味著正在預測的類之間存在有序關系,這在預測“狗”和“貓”等標簽時可能不是這種情況。 序數關系允許硬分類問題以及可以事后舍入到特定類別的整數預測問題。 下面是將最低每日溫度預測問題轉換為分類問題的示例,其中每個溫度值是冷,中或熱的序數值。這些標簽映射到整數值,定義如下: * 0(冷):&lt; 10 攝氏度。 * 1(中等):&gt; = 10 且&lt; 25 攝氏度。 * 2(熱):&gt; = 25 攝氏度。 ```py from pandas import Series from pandas import DataFrame from pandas import concat from math import floor # load data series = Series.from_csv('daily-minimum-temperatures.csv', header=0) # Create lagged dataset values = DataFrame(series.values) dataframe = concat([values.shift(1), values], axis=1) dataframe.columns = ['t-1', 't+1'] # round forecast to nearest 5 for i in range(len(dataframe['t+1'])): value = dataframe['t+1'][i] if value < 10.0: dataframe['t+1'][i] = 0 elif value >= 25.0: dataframe['t+1'][i] = 2 else: dataframe['t+1'][i] = 1 print(dataframe.head(5)) ``` 運行該示例將打印重構問題的前 5 行。 給定前一天的最低溫度(攝氏度),目標是將溫度預測為冷,中或熱(分別為 0,1,2)。 ```py t-1 t+1 0 NaN 1.0 1 20.7 1.0 2 17.9 1.0 3 18.8 1.0 4 14.6 1.0 ``` ## 時間地平線框架 可以改變的另一個軸是時間范圍。 時間范圍是未來預測的時間步數。 以下是 5 種不同的方法,可以將此預測問題重新表述為不同的時間范圍: * 預測未來 7 天的最低溫度。 * 預測 30 天內的最低溫度。 * 預測下個月的平均最低溫度。 * 預測下一周將具有最低最低溫度的日期。 * 預測一年的最低溫度值。 您很容易理解需要一步預測的想法。 專注于圍繞時間范圍重新解決問題迫使您思考點與多步預測以及未來需要考慮的距離。 您可能能夠對未來進行預測,但技能可能會有所不同,進一步降低到您預測的未來。在思考預測的視野時,還要考慮預測的最低可接受表現。 下面的示例轉換最低每日溫度預測問題,以預測接下來 7 天的最低溫度。 ```py from pandas import Series from pandas import DataFrame from pandas import concat from math import floor # load data series = Series.from_csv('daily-minimum-temperatures.csv', header=0) # Create lagged dataset values = DataFrame(series.values) dataframe = concat([values.shift(1), values, values.shift(-1), values.shift(-2), values.shift(-3), values.shift(-4), values.shift(-5), values.shift(-6)], axis=1) dataframe.columns = ['t-1', 't+1', 't+2', 't+3', 't+4', 't+5', 't+6', 't+7'] print(dataframe.head(14)) ``` 運行該示例將打印轉換后的數據集的前 14 條記錄。 問題定義為:給定前一天的最低日攝入溫度,以攝氏度為單位,預測接下來 7 天的最低日常溫度。 ```py t-1 t+1 t+2 t+3 t+4 t+5 t+6 t+7 0 NaN 20.7 17.9 18.8 14.6 15.8 15.8 15.8 1 20.7 17.9 18.8 14.6 15.8 15.8 15.8 17.4 2 17.9 18.8 14.6 15.8 15.8 15.8 17.4 21.8 3 18.8 14.6 15.8 15.8 15.8 17.4 21.8 20.0 4 14.6 15.8 15.8 15.8 17.4 21.8 20.0 16.2 5 15.8 15.8 15.8 17.4 21.8 20.0 16.2 13.3 6 15.8 15.8 17.4 21.8 20.0 16.2 13.3 16.7 7 15.8 17.4 21.8 20.0 16.2 13.3 16.7 21.5 8 17.4 21.8 20.0 16.2 13.3 16.7 21.5 25.0 9 21.8 20.0 16.2 13.3 16.7 21.5 25.0 20.7 10 20.0 16.2 13.3 16.7 21.5 25.0 20.7 20.6 11 16.2 13.3 16.7 21.5 25.0 20.7 20.6 24.8 12 13.3 16.7 21.5 25.0 20.7 20.6 24.8 17.7 13 16.7 21.5 25.0 20.7 20.6 24.8 17.7 15.5 ``` ## 摘要 在本教程中,您了解了如何使用 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>

                              哎呀哎呀视频在线观看