Kombinace časových řad se strojovým učením

Machine Learning pro data časových řad v Pythonu

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Seznámení s daty

  • Datové sady použité v tomto kurzu jsou volně dostupné online
  • Pocházejí z platformy Kaggle
Machine Learning pro data časových řad v Pythonu

Akustická data srdečního tepu

  • Mnoho nahrávek srdečních zvuků od různých pacientů
  • Někteří měli zdravé srdce, jiní srdeční abnormality
  • Data jsou ve formě audio souborů s popisky
  • Dokážeme detekovat abnormální srdeční rytmy?
Machine Learning pro data časových řad v Pythonu

Načítání zvukových dat

from glob import glob
files = glob('data/heartbeat-sounds/files/*.wav')

print(files)
['data/heartbeat-sounds/proc/files/murmur__201101051104.wav',
 ...
 'data/heartbeat-sounds/proc/files/murmur__201101051114.wav']
Machine Learning pro data časových řad v Pythonu

Čtení zvukových dat

import librosa as lr
# `load` accepts a path to an audio file
audio, sfreq = lr.load('data/heartbeat-sounds/proc/files/murmur__201101051104.wav')

print(sfreq)
2205

Vzorkovací frekvence je 2205, tedy 2205 vzorků za sekundu

Machine Learning pro data časových řad v Pythonu

Odvození času z vzorků

  • Pokud známe vzorkovací frekvenci časové řady, lze odvodit časové razítko každého datového bodu relativně k prvnímu bodu
  • Poznámka: předpokládá se pevná vzorkovací frekvence a žádné ztráty dat
Machine Learning pro data časových řad v Pythonu

Vytvoření časového pole (I)

  • Vytvořte pole indexů pro každý vzorek a vydělte vzorkovací frekvencí

      indices = np.arange(0, len(audio))
      time = indices / sfreq
    
Machine Learning pro data časových řad v Pythonu

Vytvoření časového pole (II)

  • Nalezněte časové razítko (N-1)-tého datového bodu. Poté použijte linspace() pro interpolaci od nuly po tento čas

      final_time = (len(audio) - 1) / sfreq
      time = np.linspace(0, final_time, sfreq)
    
Machine Learning pro data časových řad v Pythonu

Datová sada newyorské burzy

  • Datová sada obsahuje hodnoty akcií 10 let
  • Lze v historických záznamech odhalit vzory pro předpověď budoucích hodnot?
Machine Learning pro data časových řad v Pythonu

Prozkoumání dat

data = pd.read_csv('path/to/data.csv')

data.columns
Index(['date', 'symbol', 'close', 'volume'], dtype='object')
data.head()
         date symbol       close       volume
0  2010-01-04   AAPL  214.009998  123432400.0
1  2010-01-04    ABT   54.459951   10829000.0
2  2010-01-04    AIG   29.889999    7750900.0
3  2010-01-04   AMAT   14.300000   18615100.0
4  2010-01-04   ARNC   16.650013   11512100.0
Machine Learning pro data časových řad v Pythonu

Časové řady v Pandas DataFrames

  • Typ objektu každého sloupce lze zjistit pomocí atributu dtypes
df['date'].dtypes
0    object
1    object
2    object
dtype: object
Machine Learning pro data časových řad v Pythonu

Převod sloupce na časovou řadu

  • Chcete-li zajistit, aby byl sloupec v DataFrame zpracován jako časová řada, použijte funkci to_datetime()
df['date'] = pd.to_datetime(df['date'])

df['date']
0   2017-01-01
1   2017-01-02
2   2017-01-03
Name: date, dtype: datetime64[ns]
Machine Learning pro data časových řad v Pythonu

Pojďme si procvičit!

Machine Learning pro data časových řad v Pythonu

Preparing Video For Download...