본문 바로가기

Data/Python

[Data/Python] 비계층적 군집분석

[이론]

비계층적 군집분석(Non-hierarchical Clustering)

주어진 데이터를 k개의 군집으로 나눔.

원하는 군집의 수, k를 사전에 지정. k값이 이러지 않겠어~?

k=3을 넣으면 군집이 무조 3개가 형성됨.

 

K-means Clustering

k-means 알고리즘

군집의 중심이 되는 k개의 seed 점들을 선택하여 그 seed 점과 거리가 가까운 개체들을 그룹화하는 방법

계산량 많음

+ 왜곡(Distortion). 거리제곱의 총합.  거리 제곱의 총합이 작을 수록 똘똘 뭉쳐있음

Distortion값이 작을수록 좋음. 왜곡값이 움직였는데 이전보다 커지면, 커지기 직전상태를 최종 왜곡값으로 두고 멈춤

 

 

k값을 얼마를 줄 때 성능이 가장 좋을까?

-> 실험을 여러번 해서. k값을 증가시켜서 k값을 얼마를 줄 때 성능이 가장 좋은지 판단.

 

최적의 k 값 선정

  • Ellbow Method

k값이 3일 때 왜곡값이 확 줄음. 성능이 확 좋아지는 k=3일 때를 씀

 

 

변곡점이 애매할 경우 눈에 띄게 숫자값으로 계산해보자

 

 

  • Silhouette coefficient

숫자가 크게 나오는 k값을 선택.

k=2일 때 값이 가장 크므로 k=2 선정

 

 

K-means Clustering 특징

k=5일 때 성능이 가장 좋다고 치면, 각 군집이 무슨 근거로 뭉쳐져 있는지 모름. 

각 군집이 어떤 유사성으로 뭉쳐있는지는 각각 데이터를 열고 확인하는 작업이 필요함..

k-mean는 평균을 가지고 계산하기 때문에 이상치에 민감함.

 

계층적 군집분석은 이상치를 제일 마지막에 병합하기 때문에 이상치에 덜 민감함.

 

 

 

[실습]

sklearn - MinMaxScaler() : MinMax 정규화 실시. fit()메서드로 규칙 모델을 만들고 transform() 함수로 변환 실시

sklearn - StandardScaler() : 표준화 실시. fit()메서드로 규칙 모델을 만들고 transform() 함수로 변환 실시

 

sklearn - KMeans()

  • k-means 군집분석실시
  • n_clusters, max_iter, random_state에 각각 군집개수, 최대반복연산, 결과 고정 설정 가능
  • KMeans()함수의 fit()메서드에 데이터를 할당하여 학습 진행
  • 결과 객체의 cluster_centers_와 labels_ 어트리뷰트로 군집 중심과 각 행의 군집 번호 확인 가능

그렇데요

 

 

실습1

 

 

실습2

 

 

실습3

'Data > Python' 카테고리의 다른 글

[Data/Python] 로지스틱 회귀분석  (0) 2024.01.25
[Data/Python] 회귀분석  (0) 2024.01.25
[Data/Python] 상관분석  (0) 2024.01.24
[Data/Python] 이론 정리  (1) 2024.01.24
[Data/Python]실습_데이터 전처리: 결측치 이상치  (0) 2024.01.17