在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 分析時間序列數(shù)據(jù)
人工智能開發(fā)環(huán)境配置
計算機視覺
啟發(fā)式搜索
人工智能監(jiān)督學(xué)習(xí)(回歸)
賭勝負(fù)
強化學(xué)習(xí)
人工智能無監(jiān)督學(xué)習(xí):聚類
人工智能入門概念
深度學(xué)習(xí)
NLTK包
人工智能(Python)教程
神經(jīng)網(wǎng)絡(luò)
自然語言處理
人工智能邏輯編程
遺傳算法
人工智能監(jiān)督學(xué)習(xí)(分類)
人工智能數(shù)據(jù)準(zhǔn)備
人工智能機器學(xué)習(xí)
語音識別
分析時間序列數(shù)據(jù)

分析時間序列數(shù)據(jù)

預(yù)測給定輸入序列中的下一個是機器學(xué)習(xí)中的另一個重要概念。 本章為您提供有關(guān)分析時間序列數(shù)據(jù)的詳細(xì)說明。

時間序列數(shù)據(jù)介紹

時間序列數(shù)據(jù)表示處于一系列特定時間間隔的數(shù)據(jù)。 如果我們想在機器學(xué)習(xí)中構(gòu)建序列預(yù)測,那么必須處理連續(xù)的數(shù)據(jù)和時間。 系列數(shù)據(jù)是連續(xù)數(shù)據(jù)的摘要。 數(shù)據(jù)排序是順序數(shù)據(jù)的一個重要特征。

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

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

實例

考慮下面的例子來理解序列預(yù)測。 這里A,B,C,D是給定值,并且必須使用序列預(yù)測模型預(yù)測值E。

安裝有用的包

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

Pandas

Pandas是一個開源的BSD許可庫,它為Python提供了高性能,簡便的數(shù)據(jù)結(jié)構(gòu)使用和數(shù)據(jù)分析工具。

有關(guān)Pandas教程,請訪問以下網(wǎng)址:https://www.yiibai.com/pandas/

使用以下命令安裝Pandas -

pip install pandas

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

conda install -c anaconda pandas

hmmlearn

它是一個開源BSD許可的庫,它由簡單的算法和模型組成,用于學(xué)習(xí)Python中的隱馬爾可夫模型(HMM)。 使用以下命令安裝它 -

pip install hmmlearn

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

conda install -c anaconda hmmlearn

PyStruct

它是一個結(jié)構(gòu)化的學(xué)習(xí)和預(yù)測庫。 在PyStruct中實現(xiàn)的學(xué)習(xí)算法具有諸如條件隨機場(CRF),最大值 - 馬爾科夫隨機網(wǎng)絡(luò)(M3N)或結(jié)構(gòu)支持向量機等名稱。使用以下命令來安裝它 -

pip install pystruct

CVXOPT

它用于基于Python編程語言的凸優(yōu)化。 它也是一個免費的軟件包。 使用以下命令來安裝它 -

pip install cvxopt

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

conda install -c anaconda cvdoxt

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

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

  • 使用pd.date_range包創(chuàng)建一系列日期
  • 通過使用pd.Series包對帶有日期數(shù)據(jù)進(jìn)行索引
  • 使用ts.resample包執(zhí)行重新采樣
  • 改變頻率

示例

以下示例顯示使用Pandas處理和分割時間序列數(shù)據(jù)。 請注意,這里使用月度北極濤動數(shù)據(jù),可以從monthly.ao.index.b50.current.ascii下載并可以轉(zhuǎn)換為文本格式。

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

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

第1步 ,導(dǎo)入以下軟件包 -

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

接下來,定義一個函數(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ù)頻率。 文件中是存儲從1950年1月開始的數(shù)據(jù)。

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

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

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

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ù)進(jìn)行分割。請注意以下執(zhí)行此任務(wù)的代碼 -

timeseries['1980':'1990'].plot()
   <matplotlib.axes._subplots.AxesSubplot at 0xa0e4b00>

plt.show()

當(dāng)您運行切片時間序列數(shù)據(jù)的代碼時,可以觀察下圖所示的圖形 -

從時間序列數(shù)據(jù)中提取統(tǒng)計信息

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

平均值

可以使用mean()函數(shù)來查找平均值,如下所示 -

timeseries.mean()

例子代碼的輸出是 -

-0.11143128165238671

最大值

可以使用max()函數(shù)來查找最大值,如下所示 -

timeseries.max()

那么在討論的例子中觀察的輸出是 -

3.4952999999999999

最小值

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

timeseries.min()

那么在討論的例子中觀察的輸出是 -

-4.2656999999999998

一次性獲得所有

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

timeseries.describe()

那么觀察上面例子的輸出是 -

count   817.000000
mean     -0.111431
std       1.003151
min      -4.265700
25%      -0.649430
50%      -0.042744
75%       0.475720
max       3.495300
dtype: float64

重新取樣

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

  • 時間段
  • 方法

使用mean()重新采樣

以下代碼使用mean()方法重新采樣數(shù)據(jù),這是默認(rèn)方法 -

timeseries_mm = timeseries.resample("A").mean()
timeseries_mm.plot(style = 'g--')
plt.show()

然后,可以觀察下面使用mean()重采樣輸出的圖形 -

使用median()重新采樣

使用以下代碼使用median()方法重新采樣數(shù)據(jù) -

timeseries_mm = timeseries.resample("A").median()
timeseries_mm.plot()
plt.show()

然后,觀察下面的圖形是使用median()重新采樣的輸出 -

滾動平均值

使用下面的代碼來計算滾動(移動)的平均值 -

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

然后,觀察滾動(移動)平均值的輸出圖表 -

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

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

隱馬爾可夫模型(HMM)

HMM是一個基于馬爾可夫鏈概念的隨機模型,它基于未來統(tǒng)計量的概率僅取決于當(dāng)前過程狀態(tài)而非其之前的任何狀態(tài)的假設(shè)。 例如,當(dāng)扔硬幣時,不能說第五次拋擲的結(jié)果是正面。 這是因為硬幣沒有任何記憶,下一個結(jié)果不依賴于以前的結(jié)果。

在數(shù)學(xué)上,HMM由以下變量組成 -

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

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

狀態(tài)轉(zhuǎn)移概率矩陣(A)
這是從一個狀態(tài)過渡到其他狀態(tài)的可能性。 它由A表示。

觀測發(fā)射概率矩陣(B)
它是在特定狀態(tài)下發(fā)射/觀測符號的概率。 它由B表示。

先驗概率矩陣(Π)
這是從系統(tǒng)的各種狀態(tài)開始處于特定狀態(tài)的概率。 它由Π表示。
因此,HMM可以被定義為λ=(S,O,A,B,π),
其中,

  • S = {s1,s2,…,sN}是一組N個可能的狀態(tài),
  • O = {o1,o2,…,oM}是一組M個可能的觀察符號,
  • A是N×N狀態(tài)轉(zhuǎn)移概率矩陣(TPM),
  • B是N

下一篇:自然語言處理