最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

撰寫背景

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

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

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

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

請?zhí)砑訄D片描述

這里展示的是多個特征的時間序列,其中每一行數(shù)據(jù)均屬于同一時刻。假設(shè),我們要以H( humidity)、PT(pressure)、PE(power)三個特征為預(yù)測依據(jù),取當(dāng)前和上三個時刻共四個時刻的已知數(shù)據(jù)對下一時刻的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

單特征時間序列

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

#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ù)集是一個100*1的序列,使用24個數(shù)據(jù)預(yù)測未來的1個數(shù)據(jù),那么滑窗操作就將原數(shù)據(jù)做了這樣的變換:

多特征時間序列

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

#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ù)集是一個100*3的序列,使用24個數(shù)據(jù)預(yù)測未來的1個數(shù)據(jù),那么滑窗操作就將原數(shù)據(jù)做了這樣的變換:

注意事項(xiàng)

DataSet必須是DataFrame格式。

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

總結(jié)

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

相關(guān)文章

  • Python圖像處理實(shí)現(xiàn)兩幅圖像合成一幅圖像的方法【測試可用】

    Python圖像處理實(shí)現(xiàn)兩幅圖像合成一幅圖像的方法【測試可用】

    這篇文章主要介紹了Python圖像處理實(shí)現(xiàn)兩幅圖像合成一幅圖像的方法,結(jié)合實(shí)例形式分析了Python使用Image.blend()接口與Image.composite()接口進(jìn)行圖像合成的相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • python enumerate內(nèi)置函數(shù)用法總結(jié)

    python enumerate內(nèi)置函數(shù)用法總結(jié)

    這篇文章主要介紹了python enumerate內(nèi)置函數(shù)用法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Python實(shí)現(xiàn)簡單的用戶交互方法詳解

    Python實(shí)現(xiàn)簡單的用戶交互方法詳解

    這篇文章給大家分享了關(guān)于Python實(shí)現(xiàn)簡單的用戶交互的相關(guān)知識點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2018-09-09
  • python 動態(tài)加載的實(shí)現(xiàn)方法

    python 動態(tài)加載的實(shí)現(xiàn)方法

    腳本語言都有一個優(yōu)點(diǎn),就是動態(tài)加載,python也有這個特性。這篇文章主要介紹了python 動態(tài)加載的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-12-12
  • Python時間處理模塊Time和DateTime

    Python時間處理模塊Time和DateTime

    這篇文章主要為大家介紹了Python時間處理模塊Time和DateTime使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Python基礎(chǔ)之元編程知識總結(jié)

    Python基礎(chǔ)之元編程知識總結(jié)

    很多人不理解“元編程”是個什么東西,關(guān)于它也沒有一個十分準(zhǔn)確的定義.這篇文章要說的是Python里的元編程,實(shí)際上也不一定就真的符合“元編程”的定義.只不過我無法找到一個更準(zhǔn)確的名字來代表這篇文章的主題,所以就借了這么一個名號,需要的朋友可以參考下
    2021-05-05
  • Python實(shí)現(xiàn)將MySQL中所有表的數(shù)據(jù)都導(dǎo)出為CSV文件并壓縮

    Python實(shí)現(xiàn)將MySQL中所有表的數(shù)據(jù)都導(dǎo)出為CSV文件并壓縮

    這篇文章主要為大家詳細(xì)介紹了如何使用Python將MySQL數(shù)據(jù)庫中所有表的數(shù)據(jù)都導(dǎo)出為CSV文件到一個目錄,并壓縮為zip文件到另一個目錄下,需要的可以了解下
    2025-03-03
  • Python的函數(shù)使用詳解

    Python的函數(shù)使用詳解

    大家好,本篇文章主要講的是Python的函數(shù)使用詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Python 字符串與二進(jìn)制串的相互轉(zhuǎn)換示例

    Python 字符串與二進(jìn)制串的相互轉(zhuǎn)換示例

    今天小編就為大家分享一篇Python 字符串與二進(jìn)制串的相互轉(zhuǎn)換示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python利用雪花算法實(shí)現(xiàn)生成唯一ID

    Python利用雪花算法實(shí)現(xiàn)生成唯一ID

    雪花算法是在一個項(xiàng)目體系中生成全局唯一ID標(biāo)識的一種方式,偶然間看到了Python使用雪花算法不盡感嘆真的是太便捷了。本文就來聊聊這具體的實(shí)現(xiàn)方法,感興趣的可以了解一下
    2022-11-11

最新評論

紫金县| 莒南县| 宿松县| 南充市| 和龙市| 宁安市| 翁牛特旗| 桐梓县| 昌江| 如东县| 黔西| 昔阳县| 乌审旗| 且末县| 电白县| 新乡县| 城口县| 九龙县| 南京市| 扬州市| 札达县| 上虞市| 万山特区| 兰考县| 永顺县| 河间市| 富蕴县| 定南县| 花莲县| 福贡县| 武鸣县| 湘西| 庄浪县| 临武县| 婺源县| 彝良县| 赣榆县| 井冈山市| 淳化县| 内丘县| 海林市|