真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在python中使用時(shí)間序列

本篇文章為大家展示了如何在python中使用時(shí)間序列,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶(hù)提供優(yōu)質(zhì)的服務(wù)器托管服務(wù)

時(shí)間序列是日常生活中遇到的最常見(jiàn)的數(shù)據(jù)類(lèi)型之一。股票價(jià)格、銷(xiāo)售數(shù)據(jù)、氣候數(shù)據(jù)、能源使用、甚至個(gè)人體重都是可以定期收集的數(shù)據(jù)。幾乎每個(gè)數(shù)據(jù)科學(xué)家都會(huì)在工作中遇到時(shí)間序列,能夠有效地處理這些數(shù)據(jù)是數(shù)據(jù)科學(xué)工具箱中的一項(xiàng)重要技能。

如何在python中使用時(shí)間序列

下面簡(jiǎn)要介紹了如何在python中使用時(shí)間序列。這包括使用Pandas訪問(wèn)倫敦家庭智能電表能耗數(shù)據(jù)的時(shí)間序列和一些數(shù)據(jù)操作??梢栽诖颂帣z索此帖子中使用的數(shù)據(jù)。包含了我認(rèn)為可能有用的代碼。(https://data.london.gov.uk/dataset/smartmeter-energy-use-data-in-london-households)

讓我們從基礎(chǔ)知識(shí)開(kāi)始看起,看看時(shí)間序列的定義:

時(shí)間序列是按時(shí)間順序索引,列出或繪制的數(shù)據(jù)點(diǎn)的集合。通常,時(shí)間序列是在連續(xù)的等間隔時(shí)間點(diǎn)采取的序列。因此,它是離散時(shí)間數(shù)據(jù)的序列。

時(shí)間序列數(shù)據(jù)圍繞相對(duì)確定的時(shí)間戳來(lái)組織的,因此,與隨機(jī)樣本相比,可能包含我們將嘗試提取的其他信息。

加載和處理時(shí)間序列

數(shù)據(jù)集

舉例來(lái)說(shuō),讓我們用千瓦時(shí)(每半小時(shí))的能耗讀數(shù)數(shù)據(jù)為例,在2011年11月至2014年2月期間,我們從參與了英國(guó)電網(wǎng)公司領(lǐng)導(dǎo)的"低碳倫敦"項(xiàng)目的倫敦家庭提取樣本。我們可以制作一些探索圖,最好能夠?qū)Y(jié)構(gòu)和范圍有概念,這也將使我們能夠?qū)ふ业叫枰m正的最終缺失值。

如何在python中使用時(shí)間序列

對(duì)于本文的其余部分,我們將只關(guān)注DateTime和kWhcolumns。

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

重采樣

讓我們從簡(jiǎn)單的重采樣技術(shù)開(kāi)始。重采樣涉及更改時(shí)間序列觀察的頻率。你可能對(duì)重采樣時(shí)間序列數(shù)據(jù)感興趣的一個(gè)原因是特征工程。實(shí)際上,它可以用于為監(jiān)督學(xué)習(xí)模型提供額外的結(jié)構(gòu)或指出洞察學(xué)習(xí)問(wèn)題。pandas中的重采樣方法類(lèi)似于groupby方法,因?yàn)槟銓?shí)際上是按特定時(shí)間跨度來(lái)進(jìn)行分組。然后,你可以指定重采樣的方法。讓我們通過(guò)查看一些例子使重采樣更加具體化。 我們將從每周總結(jié)開(kāi)始:

  • data.resample()將用于重新對(duì)我們的DataFrame的kWh列進(jìn)行采樣

  • "W"表示我們希望按周重采樣。

  • sum()用于表示我們希望在此期間使用的總和為kWh。

如何在python中使用時(shí)間序列

我們可以在每日總結(jié)中做同樣的事情,我們可以使用groupby和mean函數(shù)進(jìn)行每小時(shí)總結(jié):

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

為了進(jìn)一步重采樣,pandas附帶了許多內(nèi)置選項(xiàng),你甚至可以定義自己的方法。以下兩個(gè)表分別提供了表周期選項(xiàng)以及可能用于重采樣的一些常用方法。

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

其他探索

以下是你可以對(duì)數(shù)據(jù)進(jìn)行的一些探索:

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

建模與prophet框架

如何在python中使用時(shí)間序列

Facebook Prophet于2017年發(fā)布,它可用于Python和R. Prophet設(shè)計(jì)用于分析時(shí)間序列,每天的觀察顯示不同時(shí)間尺度上的模式。Prophet非常善于處理缺失的數(shù)據(jù)和對(duì)于趨勢(shì)的變化,并且通常能很好地處理異常值。它還具有用于假期對(duì)時(shí)間序列的影響進(jìn)行建模和實(shí)現(xiàn)自定義變更點(diǎn)的高級(jí)功能,但我將堅(jiān)持使用基礎(chǔ)知識(shí)建立并運(yùn)行模型。我認(rèn)為Prophet是做出快速預(yù)測(cè)的一個(gè)很好的選擇,因?yàn)樗哂兄庇^的參數(shù),可以由具有良好領(lǐng)域知識(shí)但缺乏預(yù)測(cè)模型技術(shù)技能的人對(duì)其進(jìn)行調(diào)整。有關(guān)Prophet的更多信息,可以參考此處的官方文檔。(https://facebook.github.io/prophet/docs/quick_start.html)

在使用Prophet之前,我們將數(shù)據(jù)中的列重命名為正確的格式。 Date列必須被稱(chēng)為'ds',而值列我們希望預(yù)測(cè)'y'。我們?cè)谙旅娴氖纠惺褂昧嗣咳湛偨Y(jié)數(shù)據(jù)。

如何在python中使用時(shí)間序列

然后我們導(dǎo)入Prophet,創(chuàng)建一個(gè)模型并適合數(shù)據(jù)。在Prophet中,changepoint_prior_scale(https://facebook.github.io/prophet/docs/trend_changepoints.html)參數(shù)用于控制趨勢(shì)對(duì)變化的敏感程度,較高的值更敏感,較低的值不敏感。在嘗試了一系列值后,我將此參數(shù)從默認(rèn)值0.05設(shè)置為0.10。

如何在python中使用時(shí)間序列

為了進(jìn)行預(yù)測(cè),我們需要?jiǎng)?chuàng)建所謂的未來(lái)數(shù)據(jù)幀。我們指定預(yù)測(cè)的未來(lái)周期(在我們的例子中為兩個(gè)月)和預(yù)測(cè)的頻率(每日)。 然后,我們使用我們創(chuàng)建的Prophet模型和未來(lái)的數(shù)據(jù)框進(jìn)行預(yù)測(cè)。

如何在python中使用時(shí)間序列

這很簡(jiǎn)單!未來(lái)的數(shù)據(jù)框包含未來(lái)兩個(gè)月的估計(jì)家庭消費(fèi)。我們可以用一個(gè)圖來(lái)可視化預(yù)測(cè):

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

黑點(diǎn)表示實(shí)際值,藍(lán)線(xiàn)表示預(yù)測(cè)值,淺藍(lán)色陰影區(qū)域表示不確定性。

如下圖所示,隨著我們未來(lái)的進(jìn)一步發(fā)展,不確定區(qū)域也會(huì)增長(zhǎng),因?yàn)樽畛醯牟淮_定性會(huì)隨著時(shí)間的推移而傳播和增長(zhǎng)。

如何在python中使用時(shí)間序列

Prophet也讓我們輕松地可視化整體趨勢(shì)和組件模式:

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

每年的模式都很有意思,因?yàn)樗坪醣砻髑锛竞投炯彝ハM(fèi)增加,春季和夏季減少。直觀地說(shuō),這正是我們期望看到的。從周趨勢(shì)來(lái)看,周日的消費(fèi)似乎比一周中的其他日子多。最后,總體趨勢(shì)表明,消費(fèi)量在緩慢下降之前增加了一年。試圖解釋這一趨勢(shì)需要進(jìn)一步調(diào)查。在下一篇文章中,我們將嘗試查找它是否與天氣有關(guān)。

LSTM預(yù)測(cè)

長(zhǎng)期短期記憶復(fù)發(fā)神經(jīng)網(wǎng)絡(luò)有望學(xué)習(xí)長(zhǎng)時(shí)間的觀察序列。這篇題為"理解LSTM網(wǎng)絡(luò)"的文章在以易于理解的方式解釋底層復(fù)雜性方面做得非常出色。(http://colah.github.io/posts/2015-08-Understanding-LSTMs/)下圖是描述LSTM內(nèi)部單元架構(gòu)的圖像。

如何在python中使用時(shí)間序列

LSTM似乎非常適合時(shí)間序列預(yù)測(cè)。讓我們?cè)俅问褂梦覀兊拿咳湛偨Y(jié)數(shù)據(jù)。

如何在python中使用時(shí)間序列

LSTM對(duì)輸入數(shù)據(jù)的大小很敏感,特別是在使用sigmoid或tanh激活函數(shù)時(shí)。將數(shù)據(jù)重新調(diào)整到[0,1]或[-1,1]的范圍通常是一種很好的做法,也稱(chēng)為規(guī)范化。我們可以使用scikit-learn庫(kù)中的MinMaxScaler預(yù)處理類(lèi)輕松地規(guī)范化數(shù)據(jù)集。

如何在python中使用時(shí)間序列

現(xiàn)在我們可以將有序數(shù)據(jù)集拆分為訓(xùn)練和測(cè)試數(shù)據(jù)集。下面的代碼計(jì)算了分割點(diǎn)的索引,并將數(shù)據(jù)分成訓(xùn)練數(shù)據(jù)集,其中80%的觀測(cè)值可用于訓(xùn)練我們的模型,剩下的20%用于測(cè)試模型。

如何在python中使用時(shí)間序列

我們可以定義一個(gè)函數(shù)來(lái)創(chuàng)建一個(gè)新的數(shù)據(jù)集,并使用該函數(shù)來(lái)準(zhǔn)備建模的訓(xùn)練和測(cè)試數(shù)據(jù)集。

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

LSTM網(wǎng)絡(luò)期望輸入數(shù)據(jù)以以下形式提供特定的陣列結(jié)構(gòu):[樣本,時(shí)間步驟,特性]。

我們的數(shù)據(jù)目前采用[樣本,特性]的形式,我們將問(wèn)題定為每個(gè)樣本的兩個(gè)時(shí)間步驟。我們可以將準(zhǔn)備好的訓(xùn)練和測(cè)試輸入數(shù)據(jù)轉(zhuǎn)換為預(yù)期的結(jié)構(gòu),如下所示:

如何在python中使用時(shí)間序列

就這樣!我們現(xiàn)在已經(jīng)準(zhǔn)備好為我們的示例設(shè)計(jì)和調(diào)整我們的LSTM網(wǎng)絡(luò)。

如何在python中使用時(shí)間序列

從損失圖中,我們可以看到該模型在訓(xùn)練和測(cè)試數(shù)據(jù)集上都具有類(lèi)似的性能。

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

在下圖中,我們看到LSTM在擬合測(cè)試數(shù)據(jù)集方面做得非常好。

如何在python中使用時(shí)間序列

聚類(lèi)

最后但同樣重要的是,我們還可以使用我們的示例數(shù)據(jù)進(jìn)行聚類(lèi)。有許多不同的方法來(lái)執(zhí)行集群,其中一種方法是分層地形成集群。你可以通過(guò)兩種方式形成層次結(jié)構(gòu):從頂部開(kāi)始拆分,或從底部開(kāi)始合并。我決定在這篇文章中使用后者。

讓我們從數(shù)據(jù)開(kāi)始,我們只需導(dǎo)入原始數(shù)據(jù),并為一年中的某一天和一天中的小時(shí)添加兩列。

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

Linkage函數(shù)和樹(shù)狀圖

Linkage函數(shù)根據(jù)物體的相似性和距離信息將物體分組。這些新形成的集群彼此鏈接以創(chuàng)建更大的集群。這個(gè)過(guò)程被迭代,直到原始數(shù)據(jù)集中的所有對(duì)象鏈接到一個(gè)分層樹(shù)中。

對(duì)我們的數(shù)據(jù)進(jìn)行聚類(lèi):

如何在python中使用時(shí)間序列

完成了!但"ward"是什么意思?這實(shí)際上是如何運(yùn)作的?正如scipy linkage文檔所告訴我們的那樣,ward是可用于計(jì)算新形成的集群之間距離的方法之一。"ward"鏈接功能是Ward方差最小化算法。

現(xiàn)在讓我們來(lái)看看這種分層聚類(lèi)的樹(shù)形圖。樹(shù)形圖是聚類(lèi)的分層圖,其中樹(shù)形圖的長(zhǎng)度表示到下一個(gè)聚類(lèi)中心的距離。

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

如果這是你第一次看到樹(shù)狀圖,那看起來(lái)很?chē)樔?,但不要?dān)心,讓我們把它分開(kāi):

· 在x軸上,你可以看到標(biāo)簽。如果你沒(méi)有指定任何其他東西(比如我),它們就是X中樣本的索引。

· 在y軸上,你可以看到距離(在我們的例子中是word算法)。

· 水平線(xiàn)是集群合并

· 垂直線(xiàn)告訴你哪些集群/標(biāo)簽是合并,形成新集群的一部分

· 水平線(xiàn)的高度告訴你新形成的集群所需要的距離

即使有解釋?zhuān)惹暗臉?shù)狀圖仍然不明顯。我們可以"削減"一點(diǎn),以便能夠更好地查看數(shù)據(jù)。

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

如何在python中使用時(shí)間序列

好多了,不是嗎? 查看聚類(lèi)文檔以了解更多信息并使用不同的參數(shù)。

上述內(nèi)容就是如何在python中使用時(shí)間序列,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞標(biāo)題:如何在python中使用時(shí)間序列
網(wǎng)頁(yè)地址:http://weahome.cn/article/ipeoop.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部