기간에 따른 현황파악을 할 수 있도록 Prophet을 다시 공부 해봤다
너무 어렵다.. 데이터 구해서 진행해보면서 실전에서 사용할 수 있도록 준비준비..
! pip3 install prophet
! pip3 install pystan
오류가 있어 pip 업그레이드를 해주었다.
import os
import pandas as pd
from prophet import Prophet
df[['STATS_DTTM', 'ORDER_CNT']].rename(columns={'기간':'ds', '실측값': 'y'})
# 시간은 ds로 예측값은 y로 컬럼명을 변경해야 한다.
from matplotlib import pyplot
df1.plot( y= 'y', x= 'ds', figsize = (20,8))
pyplot.show()
m = Prophet()
# 학습
m.fit(df1)
# 예측하고 싶은 데이터를 만들어 놓는다.
future = m.make_future_dataframe(periods=100) # periods : 예측 일 수
# 예측
forecast = m.predict(future)
# 시각화
flg1 = m.plot(forecast, figsize = (20,8))
flg2 = m.plot_components(forecast, figsize = (20,8))
기본으로 나올 수 있는 그래프 데이터의 기간에 따른 트랜드를 볼 수 있다.
내 데이터는 일자별로 있기에 주 별로 데이터가 어떻게 나오는지 알 수 있다.
모델을 정의 할 땐 파라미터 값이 있다.
값을 조정할 경우 그래프가 세밀하게 조정 될 수 있다.
# 파라미터값 조정해보기
# 모델 정의
m1 = Prophet(changepoint_prior_scale=0.1 # 값이 높을 수록 OVERFITTING위험 있음 0.3도 현재 오버피팅되있을 수 있음
, weekly_seasonality=10
, yearly_seasonality=20
, daily_seasonality=False # 시간에 대한 자료가 존재하지 않음
, seasonality_mode='additive' # 곱셈'multiplicative', 덧셈'additive'(default) 계절성 효과
)
m1.add_seasonality(name='monthly', period=30.5, fourier_order=5) # 필요한 seasonality는 추가 가능함
# 학습
m1.fit(df1)
# 예측데이터
future = m1.make_future_dataframe(periods=365) # periods : 예측 일 수
forecast = m1.predict(future)
flg3 = m1.plot(forecast, figsize = (20,8))
flg4 = m1.plot_components(forecast, figsize = (20,8))
Teachable Machine Learning Site (0) | 2021.07.26 |
---|---|
[머신러닝]SVM(Support Vector Machine) (0) | 2021.06.07 |
[머신러닝]당뇨병 분류하는 모델 (0) | 2021.05.20 |
[머신러닝]KNN 구매여부 확인 (0) | 2021.05.19 |
[머신러닝]KNN(K-Nearest Neighbor) (0) | 2021.05.19 |