페이스북 Prophet - 시계열 예측 인공지능 모델로 미래 상황 예측해보기

반응형

Prophet

  • 사전적 의미로는 예언자 라는 뜻
  • 페이스북에서 공개한 날짜/시간 예측을 위한 오픈 소스 라이브러리
  • 컬럼명은 ds와 y로 변경하여야 사용 가능
    • 첫번째 컬럼 ds는 반드시 datetime 형태로 변환
    • 즉, 시간에 따른 y의 값을 학습하여 미래를 예측

 

Prophet 라이브러리 호출

주피터 노트북 : !pip install Prophet

아나콘다 프롬프트 : conda install -c conda-forge fbprophet

from fbprophet import Prophet

 

목표

  • 예시에 사용 할 데이터프레임
  • 지금까지의 데이터를 학습하여 미래의 가격을 예측해보기
avocado.csv
1.88MB
df =  pandas.read_csv('avocado.csv', index_col=0)
df.head()
예시 이미지

 

사용할 컬럼 추출

  • 날짜에 따른 데이터 정렬
df = df.sort_values('Date')
df.head()

예시 이미지

 

  • 날짜(Date)와 가격(AveragePrice) 컬럼 추출
    • prophet 라이브러리 사용을 위해 컬럼명 변경
      • 첫번째 컬럼명은 'ds', 두번째 컬럼명은 'y'
prophet_df = df[ ['Date', 'AveragePrice'] ] # 컬럼 추출
prophet_df.columns = ['ds', 'y'] # 컬럼명 변경
prophet_df.head()

예시 이미지

 

Prophet 모델링

  • from fbprophet import Prophet 호출
  • 없을 경우 설치, pip install fbprophet

 

  • 인공지능 생성
  • prophet = Prophet()

 

  • 인공지능 학습
prophet.fit(prophet_df
# ds, y 컬럼명으로 변경한 데이터프레임 학습

 

  • 예측 기간 설정 후 데이터프레임 저장
    • Prophet.make_future_dataframe( periods= 기간, freq= 단위)
      • periods : 수치 설정
      • freq : 수치의 단위 설정, 기본 값은 일(day)
      • Y(년), M(월), W(주), D(일), H(시간), M(분), S(초)
future = prophet.make_future_dataframe( periods=365 )
# 예측할 기간 설정 : 365일
# 예측한 값을 저장할 빈 데이터프레임 future 생성

 

Prophet 인공지능 테스트

  • 학습시킨 인공지능에게 기간 설정을 한 변수 전달하여 예측 수행
# 예측 데이터로 채움
forecast = prophet.predict(future)

# 365일치 예측 값 출력 확인
forecast.head()

예시 이미지

 

인공지능 예측값 시각화

  • 시각화를 진행 할 경우 차트가 두개로 나오는 버그가 있습니다.
  • 편법으로는 출력된 그래프를 저장하면 차트가 하나로 나오게 할 수 있습니다.

 

  • Prophet.plot(값) : 예측 값 확인 차트 생성
    • 차트의 검은 부분 : 실제 값 데이터
    • 차트의 파란 부분 : 미래 1년까지의 예측 값 데이터
prophet.plot(forecast) # 차트 생성
plt.savefig('chart1.jpg')
# 두개로 나오는 차트 버그 사라지게 하는 방법, 저장하여서 한개로 출력

예시 이미지

 

  • Prophet.plot_components(값) : 예측 값과 예측 경향(트렌드) 확인 차트 생성
prophet.plot_components(forecast) # 차트 생성
plt.savefig('chart2.jpg')
# 두개로 나오는 차트 버그 사라지게 하는 방법, 저장하여서 한개로 출력

예시 이미지

반응형