728x90
반응형

페이스북 시계열 분석 라이브러리 : Prophet

📍 시계열 예측을 그래프(시각화)로 표현하는 모델
📍 Prophet 모델에 넣어줘야 하는 데이터 형태
- index는 날짜, Data컬럼, Adj Close(수정종가) 컬럼
- Prophet에서 사용하는 컬럼명은 ds, y 컬럼명을 사용함
     > 기존 컬럼명을 수정해야함
     > Data 컬럼명은 ds로, Adj Close 컬럼명은 y로 수정

데이터 프레임 수정

### 원본데이터에서
# - 최종 데이터 프레임 변수명 : prophet_data
prophet_data = goog_data.copy()

# - Date index는 컬럼 데이터로 변환
prophet_data.reset_index(inplace=True)

# - 훈련에 사용할 컬럼명 : Date, Adj Close
# - 훈련에 사용하지 않는 컬럼은 삭제
prophet_data.drop(["Open", "High", "Low", "Close", "Volume"], axis=1, inplace=True)

# - 훈련에 사용할 컬럼명 변경 : Data > ds, Adj Close > y
prophet_data.columns = ['ds', 'y']

# - ds 데이터 타입 변경
prophet_data["ds"] = pd.to_datetime(prophet_data["ds"])
prophet_data

 

 

Prophet 라이브러리 설치

📍Prophet 라이브러리 
- 가상환경 새로 만들어서 진행 : 버전 충돌이 많이 일어남
- 가상환경 생성 시 python 버전은 3.6 버전 사용(3.9 버전은 사용이 안되기에, 3.9 이하 버전으로 사용)
- Prophet 라이브러리는 C++ 프로그램으로 만들어져 있음
from fbprophet import Prophet

 

Prophet 모델 생성

''' 일 단위 주기성 활성화하기 '''
### prophet 모델 생성
model = Prophet(daily_seasonality=True)

''' 모델 학습 시키기 '''
model.fit(prophet_data[["ds", "y"]].iloc[:-10])

 

3년 후 예측하기

### 기존 값에 3년 후 일자를 포함해서 추출하기
future = model.make_future_dataframe(periods=365 * 3)
# future

### 예측하기
forecast = model.predict(future)
# forecast

### 시각화
model.plot(forecast)

 

# 계절성을 나타내는 그래프 
# 그려진 범위 그래프가 커질 수록 오차가 있는 것
model.plot_components(forecast)

 

728x90
반응형

+ Recent posts