삶의 공유

파이썬으로 이더리움 가격 예측하기(시계열 예측 라이브러리, prophet) 본문

Data Scientist/Python

파이썬으로 이더리움 가격 예측하기(시계열 예측 라이브러리, prophet)

dkrehd 2023. 1. 18. 14:58
728x90
반응형

안녕하세요 ~

 

오늘은 파이썬으로 이더리움 가격 예측하는 하는 방법에 대해 알아 보는 포스팅을 하려고 합니다.

 

먼저 prophet이라는 라이브러리에 대해서 알아보겠습니다.

 

prophet라이브러리는 페이스북(현 메타)에서 만든 시계열 예측 라이브러리 입니다. 정확도가 높은 편이고 각종 파라미터로 모델 수정하기가 쉽다는 장점이 있습니다. 

 


1. 라이브러리 불러오기


 

먼저 필요한 라이브러리 들을 불러오겠습니다. 

저희는 바이낸스에서 데이터를 불러올것이기 때문에 객체 생성을 하기 위한 cctv 라이브러리를 불러오고 

그리고 pandas, numpy 라이브러리를 불러옵니다.

마지막으로 prophet 라이브러리 까지 불러오면 필요한 라이브러리는 다 가져온것 같습니다.

import ccxt 
import pandas as pd
import numpy as np
from fbprophet import Prophet # prophet 모듈 세팅

 


2. 데이터 조회


 

바이낸스 API 신청 시 받은 API, SECRET KEY를 이용해서 객체를 생성 합니다.

# api key, secret key
API_KEY = '각자의 api key'
SECRET_KEY = '각자의 secret key'

# 바이낸스 객체 생성
binance = ccxt.binance(config={
    'apiKey': API_KEY, 
    'secret': SECRET_KEY,
    'enableRateLimit': True,
    'options': {
        'defaultType': 'future'
    }
})

 

그리고 이제 위에 만든 바이낸스 객체를 이용하여 데이터를 불러 오겠습니다. 그리고 학습시킬 데이터에 필요한 컬럼인 날짜컬럼(datetime)과 종가컬럼 (close)만 별도로 만들어 data 변수에 넣어 주겠습니다.

# 데이터 준비
btc_ohlcv = binance.fetch_ohlcv("ETH/USDT",timeframe='1d',limit=5000)
df = pd.DataFrame(btc_ohlcv, columns=['datetime', 'open', 'high', 'low', 'close', 'volume'])
df['datetime'] = pd.to_datetime(df['datetime'], unit='ms')
df.set_index('datetime', inplace=True)
df['ds'] = pd.to_datetime(df.index)
df['y'] = df['close']
data = df[['ds', 'y']]

data의 형태는 아래와 같습니다

 

반응형

 


3. 데이터 학습 및 예측 모델 생성


 

자 이제 위에 준비한 데이터를 학습 시켜 보겠습니다. 먼저 모델을 생성하고, 생성한 모델을 학습 시키는 코드 입니다. 

간단하죠? ㅎㅎ

 

model = Prophet() # 모델 생성
model.fit(data) # 데이터 학습 시작 -> 기계학습

 


4. 주가 예측 및 시각화를 통한 결과 확인


아래와 같이 periods에 100이라고 입력해주면  향후 100일 치에 대한 예측값을 셋팅 한다고 보시면 됩니다.

future = model.make_future_dataframe(periods=100) # 주가 예측 위한 날짜 데이터 세팅+ 향후 100일치 예측값
forecast = model.predict(future) # 주가 예측
model.plot(forecast)# 모델이 제공하는 시각화

모델에서 제공하는 시각화함수를 통해 실제 값과 예측값의 차이를 시각화하여 살펴 보겠습니다.

 

파란선이 예츨값, 까만색 점으로 표시된 Scatter plot이 실측값입니다. 많이 차이나는게 보이죠? ㅎㅎ 모델에 대해 파라미터등을 수정하지 않고 Default로 적용해서 그런것 같습니다.

 

plot_components 함수를 이용하면 연도별, 요일별, 월별 경향성을 확인 할 수 있습니다.

model.plot_components(forecast)

 

 

 

이렇게 prophet 라이브러를 이용해서 파이썬으로 이더리움 가격 예측하는 방법에 대해 알아보았습니다.

그럼 이만 포스팅을 마치도록 하겠습니다.

감사합니다.

 

 

반응형