개발/데이터 분석

도보에 따른 칼로리 소모량 분석해보기 2. 데이터 전처리

잠수돌침대 2023. 1. 7. 19:00

이전 내용과 이어집니다.

https://songmin9813.tistory.com/39(1. 데이터 인사이트)


 

각 데이터는 ‘날짜’라는 동일한 값을 가지고 있음을 파악했기 때문에 이를 primary key로 삼아 join을 진행하여 하나의 테이블을 만드는 것이 도움이 될 것이라 판단했다. 이에 join 함수를 이용하여 세 개의 데이터를 한 번에 합치는 과정을 진행했고, 해당 데이터프레임 내 결측치가 존재하는지 info 함수를 통해 우선 확인하였다.

 

결측치는 존재하지 않는다 음!

 

각 열은 167열로 이루어진 것을 확인할 수 있었고, 각 값에 대한 결측치는 존재하지 않는 것을 확인했다.

 

모든 데이터를 하나의 그래프로 시각화(정규화 이전)

 

모두 join을 진행시키고 정규화 전 출력은 상기 그림과 같다. y축이 각 column 별로 제각각 존재했기에 column 별 정규화를 진행하여 그래프를 확인하는 작업을 거쳤다.

 

그래프 정규화 후 시각화 결과

 

정규화를 진행하기 전과 다르게 distance가 steps에 가려져 거의 보이지 않는 것을 확인할 수 있었다. 이는 두 독립변수가 강한 양의 상관관계에 있기에 다음과 같은 결과가 나오는 것으로 분석된다.

 

 

이정도면 거의 찐친급인데?

 

실제로 corr 함수를 이용하여 각 데이터에 대한 상관도를 분석한 결과 각각이 강한 양의 상관관계를 띄는 것을 확인할 수 있었다. 이제는 각 데이터셋의 관계를 산점도를 이용하여 분석하도록 한다.

 

여기에 필요한 정보가 다 담겨있다 해도 무방

 

각각의 산점도가 정직한 우상향 그래프를 그리는 것을 알 수 있다. 이는 다른 특수한 ML 모델이 아닌 단순 선형 회귀 분석으로도 충분히 가능한 분석으로 보이기에 해당 산점도와 상관계수를 이유로 선형회귀 모델을 이용한 칼로리 예측 프로그램을 작성해보도록 한다.

 

추가적으로 산점도와 별개로 각각의 히스토그램이 고른 정규분포를 따르지 않는 것을 확인하였다. 이를 해결하기 위해 distance와 steps가 0인 값을 제거한 후 다시 산점도 그래프를 확인하도록 한다.

 

이상치 제거 후 히스토그램이 비교적 정규분포를 따르는 것을 알 수 있음

 

이상치라고 판단되는 독립 변수를 삭제한 결과 각각의 히스토그램 또한 특정 구간에서의 정규 분포가 형성되는 것을 확인할 수 있었다. 분석을 진행할 때 해당 데이터를 바탕으로 모델링을 진행하는 것이 타당할 것이다.

 

결과적으로 해당 데이터 분석을 통해 얻은 결과는 다음 세 가지와 같다.

 

1. 하나의 독립 변수를 이용하더라도 다른 독립 변수를 어느 정도 강하게 설명할 수 있다. 이는 ML을 구현함에 있어서 다중 공선성 문제와 결부되기 때문에 해당 독립 변수를 제외해도 모델링에 있어 큰 변화는 있지 않을 것이다.

2. calories에 대한 정보 또한 steps, distance와 강한 양의 상관관계를 띄고 있기 때문에 해당 데이터는 소모한 칼로리로 가정하고 프로그램을 작성하는 것이 타당할 것이다.

3. 1~2개의 독립변수만으로 다른 변수를 설명할 수 있다면 가령 distance와 steps만을 이용해서 calories의 유추가 충분히 가능한다는 것을 암시한다. 이후 ML를 도입할 때 해당 calories를 종속 변수로 가정하고 프로그램을 짜도록 한다.

 

마지막 장에서는 해당 분석 결과를 토대로 단순 선형 회귀 분석을 돌린 결과를 소개하고 공유하는 시간을 가진다.