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

Python時(shí)間序列數(shù)據(jù)的預(yù)處理方法總結(jié)

 更新時(shí)間:2022年07月28日 15:45:37   作者:我愛Python數(shù)據(jù)挖掘  
這篇文章主要介紹了Python時(shí)間序列數(shù)據(jù)的預(yù)處理方法總結(jié),時(shí)間序列數(shù)據(jù)隨處可見,要進(jìn)行時(shí)間序列分析,我們必須先對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。時(shí)間序列預(yù)處理技術(shù)對(duì)數(shù)據(jù)建模的準(zhǔn)確性有重大影響

前言

時(shí)間序列數(shù)據(jù)隨處可見,要進(jìn)行時(shí)間序列分析,我們必須先對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。時(shí)間序列預(yù)處理技術(shù)對(duì)數(shù)據(jù)建模的準(zhǔn)確性有重大影響。

在本文中,我們將主要討論以下幾點(diǎn):

  • 時(shí)間序列數(shù)據(jù)的定義及其重要性。
  • 時(shí)間序列數(shù)據(jù)的預(yù)處理步驟。
  • 構(gòu)建時(shí)間序列數(shù)據(jù),查找缺失值,對(duì)特征進(jìn)行去噪,并查找數(shù)據(jù)集中存在的異常值。

首先,讓我們先了解時(shí)間序列的定義:

時(shí)間序列是在特定時(shí)間間隔內(nèi)記錄的一系列均勻分布的觀測值。

時(shí)間序列的一個(gè)例子是黃金價(jià)格。在這種情況下,我們的觀察是在固定時(shí)間間隔后一段時(shí)間內(nèi)收集的黃金價(jià)格。時(shí)間單位可以是分鐘、小時(shí)、天、年等。但是任何兩個(gè)連續(xù)樣本之間的時(shí)間差是相同的。

在本文中,我們將看到在深入研究數(shù)據(jù)建模部分之前應(yīng)執(zhí)行的常見時(shí)間序列預(yù)處理步驟和與時(shí)間序列數(shù)據(jù)相關(guān)的常見問題。

時(shí)間序列數(shù)據(jù)預(yù)處理

時(shí)間序列數(shù)據(jù)包含大量信息,但通常是不可見的。與時(shí)間序列相關(guān)的常見問題是無序時(shí)間戳、缺失值(或時(shí)間戳)、異常值和數(shù)據(jù)中的噪聲。在所有提到的問題中,處理缺失值是最困難的一個(gè),因?yàn)閭鹘y(tǒng)的插補(bǔ)(一種通過替換缺失值來保留大部分信息來處理缺失數(shù)據(jù)的技術(shù))方法在處理時(shí)間序列數(shù)據(jù)時(shí)不適用。為了分析這個(gè)預(yù)處理的實(shí)時(shí)分析,我們將使用 Kaggle 的 Air Passenger 數(shù)據(jù)集。

時(shí)間序列數(shù)據(jù)通常以非結(jié)構(gòu)化格式存在,即時(shí)間戳可能混合在一起并且沒有正確排序。另外在大多數(shù)情況下,日期時(shí)間列具有默認(rèn)的字符串?dāng)?shù)據(jù)類型,在對(duì)其應(yīng)用任何操作之前,必須先將數(shù)據(jù)時(shí)間列轉(zhuǎn)換為日期時(shí)間數(shù)據(jù)類型。

讓我們將其實(shí)現(xiàn)到我們的數(shù)據(jù)集中:

import pandas as pd
passenger = pd.read_csv('AirPassengers.csv')
passenger['Date'] = pd.to_datetime(passenger['Date'])
passenger.sort_values(by=['Date'], inplace=True, ascending=True)

時(shí)間序列中的缺失值

處理時(shí)間序列數(shù)據(jù)中的缺失值是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。傳統(tǒng)的插補(bǔ)技術(shù)不適用于時(shí)間序列數(shù)據(jù),因?yàn)榻邮罩档捻樞蚝苤匾?strong>為了解決這個(gè)問題,我們有以下插值方法:

插值是一種常用的時(shí)間序列缺失值插補(bǔ)技術(shù)。它有助于使用周圍的兩個(gè)已知數(shù)據(jù)點(diǎn)估計(jì)丟失的數(shù)據(jù)點(diǎn)。這種方法簡單且最直觀。

處理時(shí)序數(shù)據(jù)時(shí)可以使用以下的方法:

  • 基于時(shí)間的插值
  • 樣條插值
  • 線性插值

讓我們看看我們的數(shù)據(jù)在插補(bǔ)之前的樣子:

from matplotlib.pyplot import figure
import matplotlib.pyplot as plt
 
figure(figsize=(12, 5), dpi=80, linewidth=10)
plt.plot(passenger['Date'], passenger['Passengers'])
plt.title('Air Passengers Raw Data with Missing Values')
plt.xlabel('Years', fontsize=14)
plt.ylabel('Number of Passengers', fontsize=14)
plt.show()

讓我們看看以上三個(gè)方法的結(jié)果:

passenger[‘Linear'] = passenger[‘Passengers'].interpolate(method='linear')
passenger[‘Spline order 3'] = passenger[‘Passengers'].interpolate(method='spline', order=3) 
passenger[‘Time'] = passenger[‘Passengers'].interpolate(method='time')
 
methods = ['Linear', 'Spline order 3', 'Time']
from matplotlib.pyplot import figure
import matplotlib.pyplot as plt
for method in methods:
    figure(figsize=(12, 4), dpi=80, linewidth=10)
    plt.plot(passenger["Date"], passenger[method])
    plt.title('Air Passengers Imputation using: ' + types)
    plt.xlabel("Years", fontsize=14)
    plt.ylabel("Number of Passengers", fontsize=14)
    plt.show()

所有的方法都給出了還不錯(cuò)的結(jié)果。當(dāng)缺失值窗口(缺失數(shù)據(jù)的寬度)很小時(shí),這些方法更有意義。但是如果丟失了幾個(gè)連續(xù)的值,這些方法就更難估計(jì)它們。

時(shí)間序列去噪

時(shí)間序列中的噪聲元素可能會(huì)導(dǎo)致嚴(yán)重問題,所以一般情況下在構(gòu)建任何模型之前都會(huì)有去除噪聲的操作。最小化噪聲的過程稱為去噪。以下是一些通常用于從時(shí)間序列中去除噪聲的方法:

滾動(dòng)平均值

滾動(dòng)平均值是先前觀察窗口的平均值,其中窗口是來自時(shí)間序列數(shù)據(jù)的一系列值。為每個(gè)有序窗口計(jì)算平均值。這可以極大地幫助最小化時(shí)間序列數(shù)據(jù)中的噪聲。

讓我們在谷歌股票價(jià)格上應(yīng)用滾動(dòng)平均值:

rolling_google = google_stock_price['Open'].rolling(20).mean()
plt.plot(google_stock_price['Date'], google_stock_price['Open'])
plt.plot(google_stock_price['Date'], rolling_google)
plt.xlabel('Date')
plt.ylabel('Stock Price')
plt.legend(['Open','Rolling Mean'])
plt.show()

傅里葉變換

傅里葉變換可以通過將時(shí)間序列數(shù)據(jù)轉(zhuǎn)換到頻域來幫助去除噪聲,我們可以過濾掉噪聲頻率。然后應(yīng)用傅里葉反變換得到濾波后的時(shí)間序列。我們用傅里葉變換來計(jì)算谷歌股票價(jià)格。

denoised_google_stock_price = fft_denoiser(value, 0.001, True) 
plt.plot(time, google_stock['Open'][0:300])
plt.plot(time, denoised_google_stock_price)
plt.xlabel('Date', fontsize = 13)
plt.ylabel('Stock Price', fontsize = 13)
plt.legend([‘Open','Denoised: 0.001'])
plt.show()

時(shí)間序列中的離群值檢測

時(shí)間序列中的離群值是指趨勢線的突然高峰或下降。導(dǎo)致離群值可能有多種因素。讓我們看一下檢測離群值的可用方法:

基于滾動(dòng)統(tǒng)計(jì)的方法

這種方法最直觀,適用于幾乎所有類型的時(shí)間序列。在這種方法中,上限和下限是根據(jù)特定的統(tǒng)計(jì)量度創(chuàng)建的,例如均值和標(biāo)準(zhǔn)差、Z 和 T 分?jǐn)?shù)以及分布的百分位數(shù)。例如,我們可以將上限和下限定義為:

取整個(gè)序列的均值和標(biāo)準(zhǔn)差是不可取的,因?yàn)樵谶@種情況下,邊界將是靜態(tài)的。邊界應(yīng)該在滾動(dòng)窗口的基礎(chǔ)上創(chuàng)建,就像考慮一組連續(xù)的觀察來創(chuàng)建邊界,然后轉(zhuǎn)移到另一個(gè)窗口。該方法是一種高效、簡單的離群點(diǎn)檢測方法。

孤立森林

顧名思義,孤立森林是一種基于決策樹的異常檢測機(jī)器學(xué)習(xí)算法。它通過使用決策樹的分區(qū)隔離給定特征集上的數(shù)據(jù)點(diǎn)來工作。換句話說,它從數(shù)據(jù)集中取出一個(gè)樣本,并在該樣本上構(gòu)建樹,直到每個(gè)點(diǎn)都被隔離。為了隔離數(shù)據(jù)點(diǎn),通過選擇該特征的最大值和最小值之間的分割來隨機(jī)進(jìn)行分區(qū),直到每個(gè)點(diǎn)都被隔離。特征的隨機(jī)分區(qū)將為異常數(shù)據(jù)點(diǎn)在樹中創(chuàng)建更短的路徑,從而將它們與其余數(shù)據(jù)區(qū)分開來。

K-means 聚類

K-means 聚類是一種無監(jiān)督機(jī)器學(xué)習(xí)算法,經(jīng)常用于檢測時(shí)間序列數(shù)據(jù)中的異常值。該算法查看數(shù)據(jù)集中的數(shù)據(jù)點(diǎn),并將相似的數(shù)據(jù)點(diǎn)分組為 K 個(gè)聚類。通過測量數(shù)據(jù)點(diǎn)到其最近質(zhì)心的距離來區(qū)分異常。如果距離大于某個(gè)閾值,則將該數(shù)據(jù)點(diǎn)標(biāo)記為異常。K-Means 算法使用歐幾里得距離進(jìn)行比較。

面試問題

如果一個(gè)人在簡歷中寫了一個(gè)關(guān)于時(shí)間序列的項(xiàng)目,那么面試官可以從這個(gè)主題中提出這些可能的問題:

  • 預(yù)處理時(shí)間序列數(shù)據(jù)的方法有哪些,與標(biāo)準(zhǔn)插補(bǔ)方法有何不同?
  • 時(shí)間序列窗口是什么意思?
  • 你聽說過孤立森林嗎?如果是,那么你能解釋一下它是如何工作的嗎?
  • 什么是傅立葉變換,我們?yōu)槭裁葱枰?/li>
  • 填充時(shí)間序列數(shù)據(jù)中缺失值的不同方法是什么?

總結(jié)

在本文中,我們研究了一些常見的時(shí)間序列數(shù)據(jù)預(yù)處理技術(shù)。我們從排序時(shí)間序列觀察開始;然后研究了各種缺失值插補(bǔ)技術(shù)。因?yàn)槲覀兲幚淼氖且唤M有序的觀察結(jié)果,所以時(shí)間序列插補(bǔ)與傳統(tǒng)插補(bǔ)技術(shù)不同。此外,還將一些噪聲去除技術(shù)應(yīng)用于谷歌股票價(jià)格數(shù)據(jù)集,最后討論了一些時(shí)間序列的異常值檢測方法。使用所有這些提到的預(yù)處理步驟可確保高質(zhì)量數(shù)據(jù),為構(gòu)建復(fù)雜模型做好準(zhǔn)備。

到此這篇關(guān)于Python時(shí)間序列數(shù)據(jù)的預(yù)處理方法總結(jié)的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)預(yù)處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于numpy.array的shape屬性理解

    關(guān)于numpy.array的shape屬性理解

    這篇文章主要介紹了關(guān)于numpy.array的shape屬性理解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python排列組合庫itertools的具體使用

    python排列組合庫itertools的具體使用

    排列組合是數(shù)學(xué)中必不可少的一部分, Python 提供了itertools庫,該庫具有計(jì)算排列和組合的內(nèi)置函數(shù),本文主要介紹了python排列組合庫itertools的具體使用,具有一定的參考價(jià)值,感興趣的可以了解下
    2024-01-01
  • Python批量獲取基金數(shù)據(jù)的方法步驟

    Python批量獲取基金數(shù)據(jù)的方法步驟

    這篇文章主要介紹了Python批量獲取基金數(shù)據(jù)的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python中實(shí)現(xiàn)字符串類型與字典類型相互轉(zhuǎn)換的方法

    Python中實(shí)現(xiàn)字符串類型與字典類型相互轉(zhuǎn)換的方法

    這篇文章主要介紹了Python中實(shí)現(xiàn)字符串類型與字典類型相互轉(zhuǎn)換的方法,非常實(shí)用,需要的朋友可以參考下
    2014-08-08
  • pandas?dataframe寫入到hive方式

    pandas?dataframe寫入到hive方式

    這篇文章主要介紹了pandas?dataframe寫入到hive方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 在keras中model.fit_generator()和model.fit()的區(qū)別說明

    在keras中model.fit_generator()和model.fit()的區(qū)別說明

    這篇文章主要介紹了在keras中model.fit_generator()和model.fit()的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 講解Python中fileno()方法的使用

    講解Python中fileno()方法的使用

    這篇文章主要介紹了講解Python中fileno()方法的使用,是Python入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Python并行分布式框架Celery詳解

    Python并行分布式框架Celery詳解

    今天小編就為大家分享一篇關(guān)于Python并行分布式框架Celery詳解的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Python?sklearn預(yù)測評(píng)估指標(biāo)混淆矩陣計(jì)算示例詳解

    Python?sklearn預(yù)測評(píng)估指標(biāo)混淆矩陣計(jì)算示例詳解

    這篇文章主要為大家介紹了Python?sklearn預(yù)測評(píng)估指標(biāo)混淆矩陣計(jì)算示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Python 類與元類的深度挖掘 I【經(jīng)驗(yàn)】

    Python 類與元類的深度挖掘 I【經(jīng)驗(yàn)】

    super() 方法解決了類->實(shí)例實(shí)踐過程中關(guān)于命名空間的一些問題,而關(guān)于生成對(duì)象的流程,我們知道初始化實(shí)例是通過類的 __init__() 方法完成的,在此之前可能涉及到一些其它的準(zhǔn)備工作,包括接下來提到的 mro() 方法以及關(guān)鍵的元類->類的過程
    2016-05-05

最新評(píng)論