시계열 데이터와 머신러닝의 결합

Python으로 배우는 시계열 데이터 Machine Learning

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

데이터 파악하기

  • 이 강의에서 사용하는 데이터셋은 모두 온라인에서 무료로 제공됩니다
  • 웹에서 다양한 데이터셋을 다운로드할 수 있으며, 여기서는 Kaggle의 데이터셋을 사용합니다
Python으로 배우는 시계열 데이터 Machine Learning

심장 박동 음향 데이터

  • 다양한 환자의 심장 소리 녹음 데이터
  • 정상 심장과 이상 심장이 포함되어 있습니다
  • 오디오 파일과 각 파일의 레이블로 구성됩니다
  • "비정상" 심장 박동을 찾을 수 있을까요?
Python으로 배우는 시계열 데이터 Machine Learning

오디오 데이터 불러오기

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']
Python으로 배우는 시계열 데이터 Machine Learning

오디오 데이터 읽기

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

이 경우 샘플링 주파수는 2205로, 초당 2205개의 샘플이 존재합니다

Python으로 배우는 시계열 데이터 Machine Learning

샘플에서 시간 추론하기

  • 시계열의 샘플링 속도를 알면 첫 번째 데이터 포인트를 기준으로 각 데이터 포인트의 타임스탬프를 알 수 있습니다
  • 참고: 샘플링 속도가 고정되어 있고 데이터 손실이 없다고 가정합니다
Python으로 배우는 시계열 데이터 Machine Learning

시간 배열 생성 (I)

  • 각 샘플에 대한 인덱스 배열을 생성하고 샘플링 주파수로 나눕니다

      indices = np.arange(0, len(audio))
      time = indices / sfreq
    
Python으로 배우는 시계열 데이터 Machine Learning

시간 배열 생성 (II)

  • N-1번째 데이터 포인트의 타임스탬프를 구한 후, linspace()로 0부터 해당 시간까지 보간합니다

      final_time = (len(audio) - 1) / sfreq
      time = np.linspace(0, final_time, sfreq)
    
Python으로 배우는 시계열 데이터 Machine Learning

뉴욕증권거래소 데이터셋

  • 이 데이터셋은 10년간의 기업 주가 데이터로 구성됩니다
  • 과거 기록에서 패턴을 감지하여 미래 주가를 예측할 수 있을까요?
Python으로 배우는 시계열 데이터 Machine Learning

데이터 살펴보기

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
Python으로 배우는 시계열 데이터 Machine Learning

Pandas DataFrame의 시계열

  • dtypes 속성으로 각 열의 객체 유형을 확인할 수 있습니다
df['date'].dtypes
0    object
1    object
2    object
dtype: object
Python으로 배우는 시계열 데이터 Machine Learning

열을 시계열로 변환하기

  • DataFrame의 열을 시계열로 처리하려면 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]
Python으로 배우는 시계열 데이터 Machine Learning

연습해 봅시다!

Python으로 배우는 시계열 데이터 Machine Learning

Preparing Video For Download...