본문 바로가기
머신러닝

[머신러닝] 아보카도 가격 예측 실습: Prophet, EDA(Exploratory Data Analysis), make_future_dataframe

by eyoo 2022. 5. 10.

미국의 아보카도 리테일 데이터를 통해 아보카도의 가격을 예측해보자.

 

실습 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:

# 현재 가지고 있는 데이터를 토대로 미래의 아보카도 가격을 예측한다.

 

 

plot_components를 사용하여 연간, 월간 차트를 나타내보자.

 

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월까지 높은 가격대를 형성할것으로 보인다.

 

 

 

 

 

댓글