K-평균 군집화(K-means Clustering)를 이용한 비지도 학습 구현
K-평균 군집화는 데이터를 K개의 군집으로 나누는 비지도 학습 알고리즘입니다. 이 알고리즘은 각 군집의 중심을 기준으로 데이터 포인트들을 가장 가까운 군집에 할당하는 방식으로 작동합니다. 이번 포스트에서는 scikit-learn 라이브러리를 사용하여 K-means를 구현하고, 아이리스(Iris) 데이터셋에 적용해보겠습니다.
1. 필요한 라이브러리 임포트
먼저 필요한 라이브러리들을 임포트합니다.

2. 데이터 준비
아이리스 데이터셋을 로드하고 특성(X)과 타겟(y)으로 분리합니다.

3-1. 데이터 전처리
인코딩 (Encoding)
- 필요 여부: 불필요
- 이유: 아이리스 데이터셋의 특성은 이미 숫자형 데이터입니다. 타겟 변수는 이미 숫자로 인코딩되어 있습니다.
피처 스케일링 (Feature Scaling)
- 필요 여부: 필요
- 이유: K-means는 거리 기반 알고리즘이므로 특성들의 스케일이 다르면 군집화에 영향을 줄 수 있습니다.

4. 모델링 및 학습
K-means 모델을 초기화하고 학습시킵니다. 여기서는 군집의 수를 3으로 설정합니다.

5. 군집 할당 및 평가
각 데이터 포인트에 군집을 할당하고 결과를 시각화합니다.

6. 최적의 군집 수 찾기 (엘보우 방법)
최적의 군집 수를 찾기 위해 엘보우 방법을 사용합니다.


결론
K-means 군집화는 데이터를 자연스럽게 그룹화하는 데 유용한 비지도 학습 알고리즘입니다. 이 예제에서는 아이리스 데이터셋을 3개의 군집으로 나누었습니다.
K-means의 장단점
장점:
- 구현이 간단하고 이해하기 쉽습니다.
- 대규모 데이터셋에도 비교적 빠르게 적용할 수 있습니다.
- 군집의 특성을 쉽게 해석할 수 있습니다.
단점:
- 초기 중심점 선택에 따라 결과가 달라질 수 있습니다.
- 군집의 수(K)를 사전에 지정해야 합니다.
- 구형이 아닌 복잡한 형태의 군집을 잘 찾지 못할 수 있습니다.
- 이상치에 민감할 수 있습니다.
K-means는 데이터 세그먼테이션, 고객 분류, 이미지 압축 등 다양한 분야에서 활용됩니다. 그러나 최적의 군집 수를 결정하는 것이 중요하며, 엘보우 방법이나 실루엣 분석 등을 통해 이를 결정할 수 있습니다.
'Python' 카테고리의 다른 글
| Teachable Machine으로 학습한 모델을 Streamlit 서버에 배포하기 (0) | 2025.02.25 |
|---|---|
| Python에서 Jupyter Notebook을 통해 머신러닝하기 : Classfication편 (0) | 2025.02.21 |
| Python에서 Jupyter Notebook을 통해 머신러닝하기 : Regression편 (0) | 2025.02.20 |
| Python 데이터 분석 (0) | 2025.02.11 |
| Python 라이브러리 설명 : pandas 편 (0) | 2025.02.10 |