[이론]
비계층적 군집분석(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
변곡점이 애매할 경우 눈에 띄게 숫자값으로 계산해보자
- Silhouette coefficient
숫자가 크게 나오는 k값을 선택.
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 |