미국의 아보카도 리테일 데이터를 통해 아보카도의 가격을 예측해보자.
실습 1. Prophet 사용하기 전, 임포트하세요.
from fbprophet import Prophet
# 에러 발생시 프롬프트에 실행 : conda install -c conda-forge fbprophet
df=
EDA(Exploratory Data Analysis) : 탐색적 데이터 분석 시작
실습 2. 데이터를 날짜순으로 정렬하세요.
in:
df.sort_values('Date', inplace= True)
df.head()
out:
실습 3 날짜별로 가격이 어떻게 변하는지 plot을 이용해서 차트로 나타내세요.
in:
df_date = df.groupby('Date')['AveragePrice'].mean()
df_date.plot()
plt.xticks(rotation = 45)
plt.show()
out:
# 같은날짜라도 지역별로 다른 가격대가 형성되어있어서 평균값으로 차트를 나타냈다.
실습 4. Prophet 분석을 위해, 두개의 컬럼만 가져오세요. ('Date', 'AveragePrice')
in:
avocado_prophet_df = df[['Date', 'AveragePrice']]
avocado_prophet_df
out:
실습 5. Prophet 을 이용한 예측 수행
먼저, 날짜와 데이터가 들어있는 컬럼명을 프로펫에서 사용하는 컬럼명인 ds 와 y 로 세팅해야한다.
in:
avocado_prophet_df.columns = ['ds','y']
avocado_prophet_df.head()
out:
# 기존의 데이터프레임에서 사용하고싶은 컬럼의 컬럼명만 바꿔도 프로펫 사용이 가능하다.
프로펫 함수를 변수로 만들고 위의 데이터로 학습시키자.
prophet = Prophet()
prophet.fit(avocado_prophet_df)
예측하고자 하는 기간을 정해서 비어있는 데이터프레임 만든다
future = prophet.make_future_dataframe(periods=365)
# periods 파라미터를 365로 설정해줬다.
# freq 파라미터의 디폴트 값은 'D' (일) 이다.
프로펫의 predict함수에 빈 데이터프레임을 넣어서 예측 데이터를 채운다.
in:
forecast = prophet.predict(future)
forecast
out:
# 맨 마지막 컬럼의 yhat이 최종 예측값이며 가장 중요하다.
이 데이터를 차트로 확인해보자
in:
prophet.plot(forecast)
out:
# 현재 가지고 있는 데이터를 토대로 미래의 아보카도 가격을 예측한다.
in:
prophet.plot_components(forecast)
out:
# 2017년부터 2019년 까지 아보카도 가격이 내려갈 전망이다.
# 10월에 가장 높은 가격대가 형성될것을 예측했다.
실습 6. region 이 West 인 아보카도의 가격을 예측하시오.
먼저 loc를 사용하여 지역이 West에 해당되는 데이터만 뽑는다.
avocado_df_sample = df.loc[df['region']=='West',].copy()
# 전체 데이터프레임이 바뀔수 있으니 copy를 사용한다.
프로펫을 사용할수 있도록 'ds'와 'y'열을 설정한다.
avocado_df_sample.rename(columns={'Date':'ds','AveragePrice':'y'}, inplace= True)
이제 프로펫을 사용하여 24주 단위로 예측해보자.
prophet = Prophet()
prophet.fit(avocado_df_sample)
future2 = prophet.make_future_dataframe(periods=24, freq='W')
forecast2 = prophet.predict(future2)
차트로 나타낸다.
in:
prophet.plot(forecast2)
out:
트렌드를 나타내는 차트:
in:
prophet.plot_components(forecast2)
out:
# West 지역의 아보카도 가격은 2016년 4월부터 점차적으로 상승할것으로 예측된다.
# 8월부터 10월까지 높은 가격대를 형성할것으로 보인다.
'머신러닝' 카테고리의 다른 글
[머신러닝] 연도별 시카고 범죄율 예측 실습: to_datetime, dt, Prophet (0) | 2022.05.11 |
---|---|
[머신러닝] Scaler의 inverse_transform, RandomForest (1) | 2022.05.10 |
[머신러닝] 스팸 분류 실습: CountVectorizer, Data Cleaning, Pipelining, NaiveBayes, Wordcloud (0) | 2022.05.10 |
[머신러닝] Hierarchical Clustering (0) | 2022.05.10 |
[머신러닝] K-Means Clustering (0) | 2022.05.09 |
댓글