날씨 예측 딥러닝 - nalssi yecheug dibleoning

데이터 출처 : www.kaggle.com/sumanthvrao/daily-climate-time-series-data

Daily Climate time series data

Daily climate data in the city of Delhi from 2013 to 2017

www.kaggle.com

날씨 예측 딥러닝 - nalssi yecheug dibleoning

ipynb file : github.com/sangHa0411/DataScience/blob/main/Climate_Change.ipynb

sangHa0411/DataScience

Contribute to sangHa0411/DataScience development by creating an account on GitHub.

github.com

날씨 예측 딥러닝 - nalssi yecheug dibleoning

먼저 Pandas를 이용해서 데이터를 불러오겠습니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

저희는 훈련 데이터 대상으로 LSTM을 이용해서 날씨 예측 모델을 만들고 이를 테스트 데이터와 적용 및 비교해보겠습니다.

여기서 저는 meantemp 데이터 만을 사용하도록 하겠습니다.

따라서 훈련 데이터 대상으로 meantemp 속성에 대해서 데이터 분석을 해보겠습니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

그래프로 시각화 할 때 Xlabel이 지저분하게 보이지 않게 특정 달의 1일만 Xlabel에 표기하도록 하기 위해서 idx_Label 리스트를 따로 만듭니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

위 그래프를 보시면 저희가 아는대로 겨울 , 봄 , 여름 , 가을 순서대로  날씨가 상승했다가 하강하는 것이 4년동안 계속 반복되는 것을 확인할 수 있습니다.

위와 같은 방식으로 Test 데이터의 meantemp 속성도 그래프로 그려보겠습니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

데이터 수가 적으므로 idx_Label은 각 달의 1일만을 표기하도록 하겠습니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

위는 Test 데이터의 meantemp 속성을 그래프로 그린 결과입니다.

이제 데이터 분석을 마치고 Time Series Forecasting을 위한 데이터 전처리를 해보도록 하겠습니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

먼저 meantemp에 대한 속성만을 다루기 때문에 이를 pd DataFrame으로 type을 변경합니다.

여기서 각 속성을 1칸씩 아래로 이동하면서 옆에 이어 붙입니다.

아래의 그림을 보시면 쉽게 이해하실 수 있으실 것입니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

여기서 NaN 데이터가 있는 행들을 모두 삭제합니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

이제 저희는 meantemp 속성에 대해서 Time Series Forecasting을 위한 데이터 전처리를 마쳤습니다.

저희는 Column 0 ~ Column 5 까지의 수치를 가지고 Column 6의 수치를 예측할 것입니다. 

정리하자면 저희는 앞선 6일의 meantemp 기록을 통해서 다음 날의 meantemp가 어떻게 될 것인지를 예측하고자 하는 것입니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

이제 위 데이터를 기반으로 해서 LSTM을 이용해서 Deep Learning Model을 만들도록 하겠습니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

LSTM을 위한 라이브러리를 가져오고 이를 이용해서 Model을 만듭니다.

훈련을 마쳤으니 이를 이용해서 날씨를 예측해보고 평개보도록 하겠습니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

위 함수의 동작 원리는 아래와 같습니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

history가 데이터에서 맨 뒤에서 input_Length 앞서 결정한 6개의 수치를 가져옵니다. 그리고 이 Vector의 Shape를 변경해서 LSTM 모델에 입력하고 예측 값을 얻습니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

특정 수치를 예측하고자 하는 회귀 문제이기 때문에 rmse를 이용해서 모델의 Error를 계산해보겠습니다.

walk_forward_validation 함수의 동작 과정은 아래의 그림과 코드를 같이 보시면 이해하시기 편하실 것입니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

먼저 훈련데이터에서 맨 마지막 6개를 사용해서 예측을 합니다. 예측 값과 실제 값(test data)와 비교를 해서 오차를 측정합니다. 그리고 Test Data를 훈련데이터에 이어 붙입니다.

이어 붙여진 훈련 데이터에서 다시 맨 마지막 6개를 사용해서 예측을 합니다. 그리고 실제 값과 비교를 해서 오차를 계산합니다. 

이와 같은 과정을 test data의 갯수 만큼 반복하고 오차를 계산합니다.

이와 같은 과정을 그래프로 그려보았습니다.

날씨 예측 딥러닝 - nalssi yecheug dibleoning

2 값이 완전히 일치하지는 않지만 크게 차이가 나지 않고 예상 값이 어느정도 실제 값과 비슷하다는 것을 확인할 수 있습니다.

참고 자료 : machinelearningmastery.com/how-to-develop-lstm-models-for-time-series-forecasting/

How to Develop LSTM Models for Time Series Forecasting

Long Short-Term Memory networks, or LSTMs for short, can be applied to time series forecasting. There are many types of LSTM models that can be used for each specific type of time series forecasting problem. In this tutorial, you will discover how to devel

machinelearningmastery.com

날씨 예측 딥러닝 - nalssi yecheug dibleoning