91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用python實現時間序列預測中的數據滑窗操作

發布時間:2022-03-08 14:47:02 來源:億速云 閱讀:639 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“如何使用python實現時間序列預測中的數據滑窗操作”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用python實現時間序列預測中的數據滑窗操作”這篇文章吧。

撰寫背景

面向數據分析的小白,水平有限,錯誤難免,歡迎指正。

什么是數據滑窗

進行機器學習時,一般都要涉及到劃分訓練集和測試集的步驟。特別地,在做數據預測時,一般把預測的依據(也就是歷史數據)稱作X,把需要預測的數據稱為y。即首先把原始數據劃分為train_X, train_y這兩個訓練數據集和test_X, test_y這兩個測試數據集。

如何使用python實現時間序列預測中的數據滑窗操作

對于時間序列數據的預測,往往是建立由好幾個歷史數據預測下一時刻的未來數據,這時候為了充分利用全部數據,應該對原始數據集進行滑窗操作,如下圖所示。

如何使用python實現時間序列預測中的數據滑窗操作

這里展示的是多個特征的時間序列,其中每一行數據均屬于同一時刻。假設,我們要以H( humidity)、PT(pressure)、PE(power)三個特征為預測依據,取當前和上三個時刻共四個時刻的已知數據對下一時刻的PE(功率)進行預測,那么對于X數據集的滑窗就應該如上圖所示,而對y數據集的滑窗應該如下圖所示。

如何使用python實現時間序列預測中的數據滑窗操作

下面給出滑窗實例。

代碼實現

滑窗函數

def sliding_window(DataSet, X_width, y_width, gap = 1, multi_vector = None, X_data = True):
    '''
    DataSet has to be as a DataFrame
    '''
    if X_data:
        if multi_vector:
            a,b = DataSet.shape
        else:
            a = DataSet.shape[0]
            b = 1
        c = (a-X_width-y_width-a%gap)/gap
        X = np.reshape(DataSet.iloc[0:X_width,:].values,(1,X_width,b))
        for i in range(len(DataSet) - X_width - y_width):
            i += 1
            if i > c:
                break
            j = i * gap
            tmp = DataSet.iloc[j:j + X_width,:].values
            tmp = np.reshape(tmp,(1,X_width,b))
            X = np.concatenate([X,tmp],0)
        return X
    else:
        if multi_vector:
            print('y_data-error:expect 1D ,given %dD'%DataSet.shape[1])
            return;
        else:
            a = DataSet.shape[0]
        c = (a-X_width-y_width-a%gap)/gap
        y = np.reshape(DataSet.iloc[X_width:X_width + y_width,0].values,(1,y_width))
        for i in range(len(DataSet) - X_width - y_width):
            i += 1
            if i > c:
                break
            j = i * gap + X_width
            tmp = DataSet.iloc[j:j + y_width,:].values
            tmp = np.reshape(tmp,(1,y_width))
            y = np.concatenate([y,tmp])
        return y

單特征時間序列

單特征時間序列是指僅有一個特征的一維時間序列,如股票收盤價、風電場風速數據、日營業額等。對單特征時間序列滑窗操作如下:

#DataSet訓練數據集
#X_width使用的歷史數據長度
#y_width要預測的數據長度
#X_data是否是X數據集
train_X = sliding_window(DataSet, X_width, y_width)
train_y = sliding_window(DataSet, X_width, y_width, X_data = None)

假設訓練數據集是一個100*1的序列,使用24個數據預測未來的1個數據,那么滑窗操作就將原數據做了這樣的變換:

如何使用python實現時間序列預測中的數據滑窗操作

多特征時間序列

多特征時間序列指時間序列的特征不止一個,如上文所舉的H、PT、PE三特征序列。這種數據一般使用在待預測的數據跟多個特征相關性較高的場合中,如氣象數據嵌入的風速預測、股市數據嵌入的收盤價格預測等。進行多特征時間序列滑窗操作如下:

#DataSet訓練數據集
#X_width使用的歷史數據長度
#y_width要預測的數據長度
#multi_vector是否為多特征
#X_data是否是X數據集
train_X = sliding_window(DataSet, X_width, y_width, multi_vector = True)
test_y = sliding_window(DataSet, X_width, y_width, multi_vector = True, X_data = None)

假設訓練數據集是一個100*3的序列,使用24個數據預測未來的1個數據,那么滑窗操作就將原數據做了這樣的變換:

如何使用python實現時間序列預測中的數據滑窗操作

注意事項

DataSet必須是DataFrame格式。

y數據集只能是一維。

以上是“如何使用python實現時間序列預測中的數據滑窗操作”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜春市| 台安县| 鄯善县| 苍南县| 璧山县| 三都| 永平县| 仁布县| 阿克苏市| 五家渠市| 新蔡县| 通许县| 土默特左旗| 黄冈市| 二手房| 页游| 宣汉县| 宿迁市| 遂溪县| 湘西| 宁武县| 卢湾区| 松滋市| 西畴县| 曲阳县| 石林| 疏附县| 天柱县| 贵州省| 揭东县| 永修县| 于都县| 时尚| 清远市| 宝应县| 怀安县| 康乐县| 修水县| 玛多县| 华安县| 兰州市|