본문 바로가기
개발 Tools/파이썬_Deep learning & ML

지역별 전기 사용량 군집화 (덴드로그램, KMeans, 클러스트링, pandas code pretty)

by 전컴반 2021. 5. 1.
반응형

안녕하세요

이번엔 지역별 전기 사용량을 가지고 군집화를 해보도록 하겠습니다. 먼저 초기에 불러올 것들이 좀 있습니.다한번 불러와 보겠습니다

 

import

 

 

AI 를 하기 위해서 기본적인 라이브러리를 불러와야 합니다. 대표적으로 Sklearn 과 scipy 가 있습니다. pd.set_option 은 출력을 했을 때 예쁘게 나오게 하기 위한 코드입니다 .꼭 없어도 됩니다!

 

원하는 데이터 추출

 

파일에서 제가 필요한 컬럼인 "서비스업" 과 "제조업" 에 해당하는 전기사용량만 가져와 보겠습니다

 

먼저 "구분" 으로 행을 지정합니다. 원래는 0,1,2 이렇게 지정돼 있었습니다. 그리고 개성과 합계는 분석하는데 필요가 없으니 제거합니다

inplace=True 는 원본을 바꿔치기하겠단 말입니다

 

그려보기

 

한번 그려서 출력해보겠습니다

 

 

scatter 로 점을 찍고 각각 점 옆에 해당하는 지역의 이름을 표시합니다

 

shape[0] 은 "구분" 에 있는 애들의 수(행) 만큼의 값입니다. 곱하기를 한 이유는 너무 점 옆에 있거나 점을 가리면 곤란하기 때문입니다. text 는 (x축 위치, y 축 위치, 문구) 이렇게 됩니다

 

찍어보니, 서울과 경기는 상대적으로 큰 값이라 제거하겠습니다

 

정규화 작업

 

그리고 분석을 하기 위해선 표준 정규화 작업을 걸쳐야 합니다. 이유는, 기준의 통일인데요. 대표적인 게 kg, cm 처럼 기준의 차이를 평균이 0 이고 편차가 1인 표준 정규분포로 바꿔줘야 합니다. 그땐, standardscaler 를 사용합니다

 

 

fit_transform("원래 값") 을 표준 정규화하라는 함입니다. 출력을 보니 평균이 0 으로 맞춰진 거 같습니다

 

군집화 & 덴드로그램

 

이제 분석을 시작할 수 있습니다. 군집화를 하기 위해선 여러 가지 방법이 있지만 저희는 거리(유클리디안) 기준으로 나눠보겠습니다

 

 

덴드로그램이란, 거리가 근접한 순으로 연결하여 마치 토너먼트 그림으로 올라가는 것입니다. 느낌이 안 오신다면 그림을 바로 보는 게 더 와 닿을 거 같습니다

 

 

이처럼 거리가 가까운 순으로 하나하나 연결하며 군집을 이룹니다

 

KMeans

 

이걸 보며 우리는 군집의 개수를 정할 수 있는데요. 그때 필요한 게 KMeans 입니다. 군집 == 클러스터처럼 받아들여도 될 거 같습니다

 

 

위에서부터 보면, n_clusters 란 군집의 수를 의미합니다. fit() 이란 학습을 시키라는 의미인데 df 을 이용하여 학습하라는 의미입니다

 

clusters_centers_ 란 각 군집의 중점의 좌표를 의미합니다. 그림을 그리기 위해 색과 표식을 설정하였습니다. k.labels_[n] 이란 군집을 4개로 나눴는데 각각의 군집당 번호를 붙입니다 0-3 까지입니다. 이건 표시할 때 군집끼리 같은 색과 표식을 하기 위함입니다. s=size 입니다

 

마지막 반복문에는 군집의 중점을 표시하기 위한 코드입니다

 

그려보기

 

한번 그림을 보겠습니다

결론은 각자가 원했던 결과에 따라 달라지겠습니다!. 이처럼 군집을 나누면 분류하여 특징을 유추하기 좋고

군집끼리 비교할 수 있습니다

 

이제 입문자라 모르는 게 많습니다. 차차 배우며 꾸준히 투고하겠습니다. 감사합니다

반응형

댓글