3-1. Methodology : 유가가격 예측 알고리즘

NUGU OIL·2021년 1월 24일
0

개발일지

목록 보기
4/9

시계열 분석을 통한 유가의 예측

유가정보 API의 경우 일주일 간의 경유, 휘발유 가격 밖에 제공하고 있지 않아 한국석유공사 홈페이지에서 기간을 설정해 가격 정보를 다운 받았다. 우리의 목표는 앞으로 4주간의 유가를 예측하는 것이다. 이러한 목표를 이루기 위해 Facebook에서 공개한 FBprophet 라이브러리를 활용한 시계열 데이터 예측을 진행할 것이다.

Prophet 알고리즘은 Facebook이 만든 시계열 예측 라이브러리로 R과 Python으로 사용할 수 있다. Arima 등의 다양한 시계열 모형이 존재하지만, Prophet의 사용법이 간단할 뿐만 아니라 높은 정확도를 가지며, 불규칙적인 주기를 다룰 수 있다는 점에서 우리는 Prophet을 선택하였다. 하지만 Prophet은 내부 알고리즘을 공개하지 않기 때문에 실제로 코드 내에서 어떻게 작동하는지는 알 수가 없다.

아래는 Prophet을 활용하여 작성한 시계열 예측 코드이다.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from fbprophet import Prophet

df = pd.read_csv("/Users/choiyun/Downloads/sampler.csv",engine='python',encoding='CP949')

model=Prophet()
model.fit(df)  

future=model.make_future_dataframe(periods=4,freq='w')
forecast=model.predict(future)

result=forecast[['ds','yhat']]
result.tail()

new_file.to_csv("/Users/choiyun/Downloads/result.csv", index=False)

오피넷을 통해 받아온 유가 정보를 read_csv 함수를 통해 불러온다. Prophet 호출을 통한 인스턴스의 생성 후, fit 함수를 통해 오피넷에서 불러온 csv 파일의 데이터 프레임을 넘겨준다. 예측한 데이터를 넣을 데이터프레임을 만들어 주는 함수, make_future_dataframe을 호출한다. 이를 통해 앞으로 4주 간의 데이터를 예측할 dataframe을 만들어 주었고, 변수 명은 future로 저장하였다. predict 메소드는 future의 각 행에 yhat(예측된 값)라는 이름의 예측 값을 할당한다. forecast에 저장된 값 중 실제 예측 값인 yhat 값만을 'result'에 저장하겠다.

result의 마지막 5개행을 출력한 결과

마지막으로 pandas librarary의 to_csv 함수를 이용하여 예측 결과를 csv 파일 형태로 저장하였다.

profile
SKT텔레콤 NUGU Speaker를 활용한 실시간으로 업데이트되는 가장 싼 주유소 정보를 제공하는 서비스

0개의 댓글

관련 채용 정보