import pandas as pd
서울관측소(108)에서 2016년 9월 1일부터 2022년 9월 29일까지의 평균기온 데이터입니다. 2016년 9월 1일부터 2022년 8월 31일까지의 데이터를 이용하여 모델을 생성합니다. 그 이후, 생성된 모델로 2022년 9월 1일부터 2022년 9월 29일까지 예측값을 만들어 실제값과 비교해보는 프로세스를 진행해 보겠습니다.
= 'https://raw.githubusercontent.com/kimheeyounghee/sigolyori/main/2_1.csv' path
= pd.read_csv(path, encoding = 'cp949') df
df.head()
print(min(df.일시))
print(max(df.일시))
온도 데이터의 시작은 2016년 9월 1일, 끝은 2022년 9월 29일입니다.
'지점', '지점명'], axis = 1, inplace = True)
df.drop([= ['ds', 'y']
df.columns df.head()
Prophet은 일정한 데이터프레임 형식이 있습니다. 날짜 열은 ‘ds’라는 이름으로, 값은 ‘y’로 지정해 주어야 합니다. 따라서 필요한 열만 남기고 남은 열의 이름을 바꾸어 줍니다.
= df[df.ds < '2022-09-01']
train = df[df.ds >= '2022-09-01'] test
모델에 적용하는 온도 데이터는 2016년 9월 1일부터 2022년 8월 31일까지이며, 2022년 9월 1일부터 2022년 9월 29일까지는 예측값과의 비교를 위해 test 데이터로 남겨둡니다.
from prophet import Prophet
= Prophet()
m m.fit(train)
= m.make_future_dataframe(periods=30)
future future.tail()
make_future_dataframe 함수는 훈련에 포함되었던 날짜와 그 이후 periods 인수의 기간만큼을 추가한 데이터프레임을 생성합니다.
= m.predict(future)
forecast 'ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail() forecast[[
predict 함수는 모델의 예측값을 산출합니다.
= m.plot(forecast)
fig1 12, 7)
fig1.set_size_inches(
import matplotlib.pyplot as plt
= plt.scatter(test.ds, test.y, color = 'y', s = 12)
fig2
plt.show()
파란 선은 예측값(yhat)이며 범위는 허용 가능한 오차 범위(yhat_lower ~ yhat_upper)입니다. 노란 점은 실제 9월 1일부터 9월 29일까지의 온도 분포입니다. 그래프를 보면 미래 온도 흐름을 예측할 수 있는 모델이 생성된 것을 알 수 있습니다.