首頁 > 軟體

Python與AI分析時間序列資料

2022-05-20 22:00:14

簡介

時間序列資料表示一系列特定時間內的資料間隔.如果我們想在機器學習中構建序列預測,那麼我們必須處理順序資料和時間.系列資料是順序資料的摘要.資料排序是序列資料的一個重要特徵.

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

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

範例

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

安裝實用軟體包

用於時間序列資料分析使用Python,我們需要安裝以下軟體包 :

Pandas

Pandas是一個開源的BSD許可庫,提供高效能,易於使用的資料結構和Python資料分析工具.您可以使用以下命令安裝Pandas :

pip install pandas

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

conda install -c anaconda pandas

hmmlearn

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

pip install hmmlearn

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

conda install -c omnia hmmlearn

PyStruct

這是一個結構化學習,預測庫.在PyStruct中實現的學習演演算法具有諸如條件隨機場(CRF),最大邊緣馬爾可夫隨機網路(M3N)或結構支援向量機之類的名稱.你可以藉助以下命令安裝它 :

pip install pystruct

CVXOPT

它用於基於Python程式語言的凸優化.它也是一個免費的軟體包.您可以使用以下命令和減號安裝它;

pip install cvxopt

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

conda install -c anaconda cvdoxt

Pandas:處理,切片和從時間序列資料中提取統計資料

如果您必須使用時間序列資料,Pandas是一個非常有用的工具.在Pandas的幫助下,您可以執行以下 :

  • 使用建立一系列日期pd.date_rangepackage
  • 使用pd.Series包索引帶有日期的pandas
  • 使用ts.resample包進行重新取樣
  • 更改頻率

範例

以下範例顯示您使用以下方式處理和切片時間序列資料大熊貓.請注意,這裡我們使用的是每月北極濤動資料,可以從 monthly.ao.index.b50.current.ascii ,可以轉換為文字格式供我們使用.

處理時間序列資料

對於處理時間序列資料,您必須執行以下步驟 :

第一步涉及匯入以下包 :

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

接下來,定義一個函數,它將從輸入檔案中讀取資料,如下面給出的程式碼所示 :

def read_data(input_file):
input_data = np.loadtxt(input_file, delimiter = None)

現在,將此資料轉換為時間序列.為此,請建立我們時間序列的日期範圍.在這個例子中,我們保留一個月的資料頻率.我們的檔案的資料從1950年1月開始.

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

在這一步中,我們在Pandas系列的幫助下建立時間序列資料,如下圖所示 :

output = pd.Series(input_data[:, index], index = dates)	
return output
if __name__=='__main__':

輸入輸入檔案的路徑,如下所示 :

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

現在,將列轉換為時間序列格式,如下所示 :

timeseries = read_data(input_file)

最後,使用顯示和減去的命令繪製和視覺化資料;

plt.figure()
timeseries.plot()
plt.show()

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

切片時間序列資料

切片只涉及檢索時間序列資料的某些部分.作為範例的一部分,我們僅從1980年到1990年對資料進行切片.觀察執行此任務的以下程式碼 :

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

當您執行切片時間序列資料的程式碼時,您可以將以下圖表視為圖中顯示的是 :

提取來自時間序列資料的統計資料

如果需要得出一些重要結論,則必須從給定資料中提取一些統計資料.平均值,方差,相關性,最大值和最小值是一些此類統計資料.如果要從給定的時間序列資料中提取此類統計資料,可以使用以下程式碼;

平均值

您可以使用mean()函數,用於查詢均值,如此處所示 :

timeseries.mean()

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

-0.11143128165238671

最大值

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

timeseries.max()

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

3.4952999999999999

最小值

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

timeseries.min()

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

-4.2656999999999998

一次性獲取所有內容

如果您想一次計算所有統計資料,可以使用describe()函數,如下所示 :

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

重新取樣

您可以將資料重新取樣到不同的時間頻率.執行重新取樣的兩個引數是 :

時間段

方法

使用mean()重新取樣

您可以使用以下程式碼使用mean()重新取樣資料方法,這是預設方法 :

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

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

Re -sampling with median()

您可以使用以下程式碼使用median()方法重新取樣資料 :

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

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

捲動平均值

您可以使用以下程式碼計算捲動(移動)均值和減去;

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

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

通過隱馬爾可夫分析順序資料模型(HMM)

HMM是一種統計模型,廣泛用於具有延續性和可延伸性的資料,如時間序列股票市場分析,健康檢查和語音反饋gnition.本節詳細介紹了使用隱馬爾可夫模型(HMM)分析順序資料.

隱馬爾可夫模型(HMM)

HMM是一個隨機模型這是建立在馬爾可夫鏈概念的基礎上的,該假設未來統計資料的概率僅取決於當前的過程狀態而不是之前的任何狀態.例如,當擲硬幣時,我們不能說第五次拋擲的結果將是一個頭.這是因為硬幣沒有任何記憶,下一個結果不依賴於之前的結果.

數學上,HMM由以下變數和減號組成;

狀態(S)

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

輸出符號(O)

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

狀態轉換概率矩陣(A)

它是從一個狀態轉換到另一個狀態的概率狀態.它由A表示.

觀察發射概率矩陣(B)

它是在特定狀態下發射/觀察符號的概率.它用B表示.

先驗概率矩陣(Π)

它是從系統的各種狀態開始於特定狀態的概率.它由Π表示.

因此,HMM可以定義為λ=(S,O,A,B,π),

其中,

S = {s1,s2,...,sN}是一組N個可能的狀態,

O = {o1,o2,...,oM}是一組M個可能的觀察符號,

A是N

以上就是Python與AI分析時間序列資料的詳細內容,更多關於Python AI分析時間序列的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com