Python與AI分析時間序列數(shù)據(jù)_第1頁
Python與AI分析時間序列數(shù)據(jù)_第2頁
Python與AI分析時間序列數(shù)據(jù)_第3頁
Python與AI分析時間序列數(shù)據(jù)_第4頁
Python與AI分析時間序列數(shù)據(jù)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第Python與AI分析時間序列數(shù)據(jù)目錄簡介序列分析或時間序列分析的基本概念安裝實用軟件包PandashmmlearnPyStructCVXOPTPandas:處理,切片和從時間序列數(shù)據(jù)中提取統(tǒng)計數(shù)據(jù)示例處理時間序列數(shù)據(jù)切片時間序列數(shù)據(jù)提取來自時間序列數(shù)據(jù)的統(tǒng)計數(shù)據(jù)平均值最大值最小值一次性獲取所有內(nèi)容重新采樣使用mean()重新采樣Re-samplingwithmedian()滾動平均值通過隱馬爾可夫分析順序數(shù)據(jù)模型(HMM)隱馬爾可夫模型(HMM)狀態(tài)(S)輸出符號(O)狀態(tài)轉(zhuǎn)換概率矩陣(A)觀察發(fā)射概率矩陣(B)先驗概率矩陣()

簡介

時間序列數(shù)據(jù)表示一系列特定時間內(nèi)的數(shù)據(jù)間隔.如果我們想在機器學習中構(gòu)建序列預測,那么我們必須處理順序數(shù)據(jù)和時間.系列數(shù)據(jù)是順序數(shù)據(jù)的摘要.數(shù)據(jù)排序是序列數(shù)據(jù)的一個重要特征.

序列分析或時間序列分析的基本概念

序列分析或時間序列分析是基于先前觀察到的,在給定輸入序列中預測下一個.預測可以是下一個可能出現(xiàn)的任何事情:符號,數(shù)字,次日天氣,下一個語音等.序列分析在股票市場分析,天氣預報和產(chǎn)品推薦等應(yīng)用中非常方便.

示例

請考慮以下示例來了解序列預測.這里A,B,C,D是給定值,您必須使用序列預測模型預測值E.

安裝實用軟件包

用于時間序列數(shù)據(jù)分析使用Python,我們需要安裝以下軟件包:

Pandas

Pandas是一個開源的BSD許可庫,提供高性能,易于使用的數(shù)據(jù)結(jié)構(gòu)和Python數(shù)據(jù)分析工具.您可以使用以下命令安裝Pandas:

pipinstallpandas

如果您使用的是Anaconda并希望使用conda包管理器進行安裝,那么您可以使用以下命令:

condainstall-canacondapandas

hmmlearn

這是一個開源的BSD-licensed庫,由簡單的算法和模型組成,用于學習Python中的隱馬爾可夫模型(HMM).你可以在以下命令的幫助下安裝它:

pipinstallhmmlearn

如果您使用的是Anaconda并希望使用conda包管理器進行安裝,那么您可以使用以下命令:

condainstall-comniahmmlearn

PyStruct

這是一個結(jié)構(gòu)化學習,預測庫.在PyStruct中實現(xiàn)的學習算法具有諸如條件隨機場(CRF),最大邊緣馬爾可夫隨機網(wǎng)絡(luò)(M3N)或結(jié)構(gòu)支持向量機之類的名稱.你可以借助以下命令安裝它:

pipinstallpystruct

CVXOPT

它用于基于Python編程語言的凸優(yōu)化.它也是一個免費的軟件包.您可以使用以下命令和減號安裝它;

pipinstallcvxopt

如果您使用的是Anaconda并希望使用conda軟件包管理器進行安裝,那么您可以使用以下命令:

condainstall-canacondacvdoxt

Pandas:處理,切片和從時間序列數(shù)據(jù)中提取統(tǒng)計數(shù)據(jù)

如果您必須使用時間序列數(shù)據(jù),Pandas是一個非常有用的工具.在Pandas的幫助下,您可以執(zhí)行以下:

使用創(chuàng)建一系列日期pd.date_rangepackage使用pd.Series包索引帶有日期的pandas使用ts.resample包進行重新采樣更改頻率

示例

以下示例顯示您使用以下方式處理和切片時間序列數(shù)據(jù)大熊貓.請注意,這里我們使用的是每月北極濤動數(shù)據(jù),可以從monthly.ao.index.b50.current.ascii,可以轉(zhuǎn)換為文本格式供我們使用.

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

對于處理時間序列數(shù)據(jù),您必須執(zhí)行以下步驟:

第一步涉及導入以下包:

importnumpyasnp

importmatplotlib.pyplotasplt

importpandasaspd

接下來,定義一個函數(shù),它將從輸入文件中讀取數(shù)據(jù),如下面給出的代碼所示:

def

read_data(input_file):

input_data

=

np.loadtxt(input_file,

delimiter

=

None)

現(xiàn)在,將此數(shù)據(jù)轉(zhuǎn)換為時間序列.為此,請創(chuàng)建我們時間序列的日期范圍.在這個例子中,我們保留一個月的數(shù)據(jù)頻率.我們的文件的數(shù)據(jù)從1950年1月開始.

dates=pd.date_range('1950-01',periods=input_data.shape[0],freq='M')

在這一步中,我們在Pandas系列的幫助下創(chuàng)建時間序列數(shù)據(jù),如下圖所示:

output=pd.Series(input_data[:,index],index=dates)

returnoutput

if__name__=='__main__':

輸入輸入文件的路徑,如下所示:

input_file="/Users/admin/AO.txt"

現(xiàn)在,將列轉(zhuǎn)換為時間序列格式,如下所示:

timeseries=read_data(input_file)

最后,使用顯示和減去的命令繪制和可視化數(shù)據(jù);

plt.figure()

timeseries.plot()

plt.show()

您將觀察到如下圖所示的圖形:

切片時間序列數(shù)據(jù)

切片只涉及檢索時間序列數(shù)據(jù)的某些部分.作為示例的一部分,我們僅從1980年到1990年對數(shù)據(jù)進行切片.觀察執(zhí)行此任務(wù)的以下代碼:

timeseries['1980':'1990'].plot()

matplotlib.axes._subplots.AxesSubplotat0xa0e4b00

plt.show()

當您運行切片時間序列數(shù)據(jù)的代碼時,您可以將以下圖表視為圖中顯示的是:

提取來自時間序列數(shù)據(jù)的統(tǒng)計數(shù)據(jù)

如果需要得出一些重要結(jié)論,則必須從給定數(shù)據(jù)中提取一些統(tǒng)計數(shù)據(jù).平均值,方差,相關(guān)性,最大值和最小值是一些此類統(tǒng)計數(shù)據(jù).如果要從給定的時間序列數(shù)據(jù)中提取此類統(tǒng)計數(shù)據(jù),可以使用以下代碼;

平均值

您可以使用mean()函數(shù),用于查找均值,如此處所示:

timeseries.mean()

然后,您將針對所討論的示例觀察到的輸出是:

-0.11143128165238671

最大值

您可以使用max()功能查找最大值,如下所示:

timeseries.max()

然后,您將針對所討論的示例觀察到的輸出是:

3.4952999999999999

最小值

您可以使用min()函數(shù)查找最小值,如下所示:

timeseries.min()

然后,您將針對所討論的示例觀察到的輸出是:

-4.2656999999999998

一次性獲取所有內(nèi)容

如果您想一次計算所有統(tǒng)計數(shù)據(jù),可以使用describe()函數(shù),如下所示:

timeseries.describe()

然后,您將針對所討論的示例觀察到的輸出是:

count817.000000

mean-0.111431

std1.003151

min-4.265700

25%-0.649430

50%-0.042744

75%0.475720

max3.495300

dtype:float64

重新采樣

您可以將數(shù)據(jù)重新采樣到不同的時間頻率.執(zhí)行重新采樣的兩個參數(shù)是:

時間段

方法

使用mean()重新采樣

您可以使用以下代碼使用mean()重新采樣數(shù)據(jù)方法,這是默認方法:

timeseries_mm

=

timeseries.resample("A").mean()

timeseries_mm.plot(style

=

'g--')

plt.show()

然后,您可以觀察以下圖表作為重采樣的輸出使用mean():

Re-samplingwithmedian()

您可以使用以下代碼使用median()方法重新取樣數(shù)據(jù):

timeseries_mm

=

timeseries.resample("A").median()

timeseries_mm.plot()

plt.show()

然后,您可以觀察下圖作為重新采樣的輸出,其中位數(shù)為():

滾動平均值

您可以使用以下代碼計算滾動(移動)均值和減去;

timeseries.rolling(window=12,center=False).mean().plot(style='-g')

plt.show()

然后,您可以觀察下圖作為滾動的輸出(移動)mean:

通過隱馬爾可夫分析順序數(shù)據(jù)模型(HMM)

HMM是一種統(tǒng)計模型,廣泛用于具有延續(xù)性和可擴展性的數(shù)據(jù),如時間序列股票市場分析,健康檢查和語音反饋gnition.本節(jié)詳細介紹了使用隱馬爾可夫模型(HMM)分析順序數(shù)據(jù).

隱馬爾可夫模型(HMM)

HMM是一個隨機模型這是建立在馬爾可夫鏈概念的基礎(chǔ)上的,該假設(shè)未來統(tǒng)計數(shù)據(jù)的概率僅取決于當前的過程狀態(tài)而不是之前的任何狀態(tài).例如,當擲硬幣時,我們不能說第五次拋擲的結(jié)果將是一個頭.這是因為硬幣沒有任何記憶,下一個結(jié)果不依賴于之前的結(jié)果.

數(shù)學上,HMM由以下變量和減號組成;

狀態(tài)(S)

它是HMM中存在的一組隱藏或潛在狀態(tài).它由S表示.

輸出符號(O)

它是HMM中存在的一組可能的輸出符號.它由O表示.

狀態(tài)轉(zhuǎn)換概率矩陣(A)

它是從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)的概率狀態(tài).它由A表示.

觀察發(fā)射概率矩陣(B)

它是在特定狀態(tài)下發(fā)射/觀察符號的概率.它用B表示.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論