欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

時(shí)間序列預(yù)測中的數(shù)據(jù)滑窗操作實(shí)例(python實(shí)現(xiàn))

 更新時(shí)間:2022年03月08日 11:31:46   作者:Chace_B  
滑動窗口操作非常普遍,非常有用,它們也很容易在Python中實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于時(shí)間序列預(yù)測中的數(shù)據(jù)滑窗操作python實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下

撰寫背景

面向數(shù)據(jù)分析的小白,水平有限,錯(cuò)誤難免,歡迎指正。

什么是數(shù)據(jù)滑窗

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

對于時(shí)間序列數(shù)據(jù)的預(yù)測,往往是建立由好幾個(gè)歷史數(shù)據(jù)預(yù)測下一時(shí)刻的未來數(shù)據(jù),這時(shí)候?yàn)榱顺浞掷萌繑?shù)據(jù),應(yīng)該對原始數(shù)據(jù)集進(jìn)行滑窗操作,如下圖所示。

請?zhí)砑訄D片描述

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

請?zhí)砑訄D片描述

下面給出滑窗實(shí)例。

代碼實(shí)現(xiàn)

滑窗函數(shù)

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

單特征時(shí)間序列

單特征時(shí)間序列是指僅有一個(gè)特征的一維時(shí)間序列,如股票收盤價(jià)、風(fēng)電場風(fēng)速數(shù)據(jù)、日營業(yè)額等。對單特征時(shí)間序列滑窗操作如下:

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

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

多特征時(shí)間序列

多特征時(shí)間序列指時(shí)間序列的特征不止一個(gè),如上文所舉的H、PT、PE三特征序列。這種數(shù)據(jù)一般使用在待預(yù)測的數(shù)據(jù)跟多個(gè)特征相關(guān)性較高的場合中,如氣象數(shù)據(jù)嵌入的風(fēng)速預(yù)測、股市數(shù)據(jù)嵌入的收盤價(jià)格預(yù)測等。進(jìn)行多特征時(shí)間序列滑窗操作如下:

#DataSet訓(xùn)練數(shù)據(jù)集
#X_width使用的歷史數(shù)據(jù)長度
#y_width要預(yù)測的數(shù)據(jù)長度
#multi_vector是否為多特征
#X_data是否是X數(shù)據(jù)集
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)

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

注意事項(xiàng)

DataSet必須是DataFrame格式。

y數(shù)據(jù)集只能是一維。

總結(jié)

到此這篇關(guān)于時(shí)間序列預(yù)測中的數(shù)據(jù)滑窗操作(python實(shí)現(xiàn))的文章就介紹到這了,更多相關(guān)python數(shù)據(jù)滑窗操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Qt5和PyQt5中設(shè)置支持高分辨率屏幕自適應(yīng)的方法

    在Qt5和PyQt5中設(shè)置支持高分辨率屏幕自適應(yīng)的方法

    今天小編就為大家分享一篇在Qt5和PyQt5中設(shè)置支持高分辨率屏幕自適應(yīng)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 利用Python發(fā)送 10 萬個(gè) http 請求

    利用Python發(fā)送 10 萬個(gè) http 請求

    這篇文章主要介紹了如何利用Python發(fā)送 10 萬個(gè) http 請求,下面我們講利用Python寫代碼實(shí)現(xiàn)10 萬個(gè) url,對每個(gè) url 發(fā)送 http 請求,并打印請求結(jié)果的狀態(tài)碼,需要的朋友可以參考一下
    2021-12-12
  • Python使用xlrd實(shí)現(xiàn)讀取合并單元格

    Python使用xlrd實(shí)現(xiàn)讀取合并單元格

    這篇文章主要介紹了Python使用xlrd實(shí)現(xiàn)讀取合并單元格,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Django項(xiàng)目的初步創(chuàng)建與簡單配置

    Django項(xiàng)目的初步創(chuàng)建與簡單配置

    本文主要介紹了Django項(xiàng)目的初步創(chuàng)建與簡單配置,詳細(xì)介紹了如何安裝和配置Django,包括創(chuàng)建項(xiàng)目、數(shù)據(jù)庫配置、路由等,通過本文可以了解如何使用Django創(chuàng)建自己的Web應(yīng)用程序
    2023-09-09
  • Python使用textract實(shí)現(xiàn)從各種文件中提取文本信息

    Python使用textract實(shí)現(xiàn)從各種文件中提取文本信息

    textract是一個(gè)強(qiáng)大的Python庫,可以用于從各種文件格式中提取文本,本文將介紹textract的使用場景,以及一些常用的Python代碼案例,希望對大家有所幫助
    2024-01-01
  • Python爬蟲和反爬技術(shù)過程詳解

    Python爬蟲和反爬技術(shù)過程詳解

    Python爬蟲是當(dāng)下最火的一種獲取數(shù)據(jù)的方式,當(dāng)我們對一些小型網(wǎng)站進(jìn)行爬取的時(shí)候往往沒什么阻礙,而當(dāng)我們爬取大型網(wǎng)站的時(shí)候經(jīng)常會遇到禁止訪問、封禁IP的情況,這也是我們觸發(fā)反爬機(jī)制的體現(xiàn),本文來帶領(lǐng)大家了解幾種簡單高效的反爬對策
    2021-09-09
  • 10個(gè)使用Python必須知道的內(nèi)置函數(shù)

    10個(gè)使用Python必須知道的內(nèi)置函數(shù)

    這篇文章小編主要向大家介紹的是10個(gè)使用Python必須知道的內(nèi)置函數(shù)reduce()、split()、map()等,更多后置函數(shù)請看下文
    2021-09-09
  • Python異常處理如何才能寫得優(yōu)雅(retrying模塊)

    Python異常處理如何才能寫得優(yōu)雅(retrying模塊)

    異常就是程序運(yùn)行時(shí)發(fā)生錯(cuò)誤的信號,下面這篇文章主要給大家介紹了關(guān)于Python異常處理的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • python字符串拼接+和join的區(qū)別詳解

    python字符串拼接+和join的區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于python字符串拼接+和join的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 如何基于Python獲取圖片的物理尺寸

    如何基于Python獲取圖片的物理尺寸

    這篇文章主要介紹了如何基于Python獲取圖片的物理尺寸,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評論