1. Prophet 라이브러리
- 페이스북이 개발한 일변량(하나의 변수) 시계열 예측을 위한 오픈소스 라이브러리
- 경향성(Trends), 계절성(seosonality), 휴일(holidays)을 반영하는 모델이다.
- 계절적 효과가 강하고 여러 시즌의 과거 데이터가 있는 시계열에서 가장 잘 작동한다.
- 정확도가 높고 빠르며 직관적인 파라미터로 모델 수정이 용이하다.
2. Prophet 설치
pip install prophet
과거에 쓰여진 글들을 보면 fbprophet이라고 나와있을텐데, 현재는 prophet으로 이름이 바뀌었다.
3. 데이터 준비
이 데이터를 이용해 아보카도 가격의 시계열 예측을 진행해 보겠다.
import pandas as pd
df = pd.read_csv('avocado.csv', index_col=0)
4. prophet을 사용할 수 있게 컬럼 세팅
날짜와 예측하고 싶은 값, 두 개의 컬럼이 있어야 한다.
그리고 컬럼명을 ds 와 y로 바꿔줘야 한다.
# 날짜순으로 정렬
df.sort_values('Date', inplace=True)
# ds와 y컬럼 만들기
avocado_prophet_df = df[ ['Date', 'AveragePrice'] ]
avocado_prophet_df.columns = ['ds', 'y']
5. 학습 및 예측 수행
from prophet import Prophet
# 1. 인스턴스 생성
prophet = Prophet()
# 2. 데이터를 학습 시킨다.
prophet.fit(df= avocado_prophet_df)
# 3. 예측하고자 하는 기간을 정해서, 비어있는 데이터 프레임을 만들어야 한다.
future= prophet.make_future_dataframe(periods=365, freq='D') # 365일
# 4. 이제, 미래 날짜까지 만들어져 있으니,
# 위의 future 데이터프레임을 이용해서, 예측할 수 있다.
forecast = prophet.predict(future)
6. 차트로 확인
현재 prophet 차트를 그릴 경우 동일한 차트 두개가 나오는 버그가 있는데,
plt.savefig 으로 차트를 저장하면 정상적으로 하나만 나온다.
import matplotlib.pyplot as plt
prophet.plot(forecast)
plt.savefig('chart1.jpg')
- 검은 점: 실제 값
- 파란 부분: 예측 값
# 예측에 사용된 구성요소 확인
prophet.plot_components(forecast)
plt.savefig('chart2.jpg')
더 자세한 사용법은 공식문서를 참고하자.
https://facebook.github.io/prophet/docs/quick_start.html#python-api