Menggabungkan data deret waktu dengan machine learning

Machine Learning untuk Data Deret Waktu di Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Mengenal data kita

  • Semua himpunan data di kursus ini tersedia gratis daring
  • Ada banyak himpunan data di web; yang kita gunakan berasal dari Kaggle
Machine Learning untuk Data Deret Waktu di Python

Data Akustik Detak Jantung

  • Banyak rekaman bunyi jantung dari pasien berbeda
  • Sebagian jantung berfungsi normal, sebagian ada kelainan
  • Data berupa berkas audio + label untuk tiap berkas
  • Bisakah kita menemukan detak jantung "abnormal"?
Machine Learning untuk Data Deret Waktu di Python

Memuat data audio

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 untuk Data Deret Waktu di Python

Membaca data audio

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

Dalam kasus ini, frekuensi sampling adalah 2205, artinya ada 2205 sampel per detik

Machine Learning untuk Data Deret Waktu di Python

Menurunkan waktu dari sampel

  • Jika kita tahu laju sampling suatu deret waktu, maka kita tahu cap waktu tiap titik data relatif terhadap titik pertama
  • Catatan: ini mengasumsikan laju sampling tetap dan tidak ada data yang hilang
Machine Learning untuk Data Deret Waktu di Python

Membuat array waktu (I)

  • Buat array indeks, satu per sampel, lalu bagi dengan frekuensi sampling

      indices = np.arange(0, len(audio))
      time = indices / sfreq
    
Machine Learning untuk Data Deret Waktu di Python

Membuat array waktu (II)

  • Temukan cap waktu untuk titik data ke-N-1. Lalu gunakan linspace() untuk menginterpolasi dari nol hingga waktu tersebut

      final_time = (len(audio) - 1) / sfreq
      time = np.linspace(0, final_time, sfreq)
    
Machine Learning untuk Data Deret Waktu di Python

Himpunan data New York Stock Exchange

  • Himpunan data ini berisi nilai saham perusahaan selama 10 tahun
  • Bisakah kita mendeteksi pola historis untuk memprediksi nilai saham di masa depan?
Machine Learning untuk Data Deret Waktu di Python

Melihat data

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 untuk Data Deret Waktu di Python

Deret waktu dengan Pandas DataFrame

  • Kita dapat memeriksa tipe objek tiap kolom melalui atribut dtypes
df['date'].dtypes
0    object
1    object
2    object
dtype: object
Machine Learning untuk Data Deret Waktu di Python

Mengonversi kolom menjadi deret waktu

  • Agar kolom pada DataFrame diperlakukan sebagai deret waktu, gunakan fungsi 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 untuk Data Deret Waktu di Python

Ayo berlatih!

Machine Learning untuk Data Deret Waktu di Python

Preparing Video For Download...