K-Means가 실패하는 경우
Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 14번째.
K-means는 각 클러스터를 중심 주위의 둥근 덩어리로 표현합니다. 다트는 중앙에 고리 모양의 링이 있는 과녁을 만들지만, k-means는 이를 반으로 나눕니다:
각 점은 가장 가까운 중심에 연결되므로, 두 군집 사이의 경계는 두 중심의 정중앙을 지나는 직선입니다. 고리와 그 가운데를 가르는 직선은 없습니다.
길고 구부러졌거나 매우 불균일한 그룹도 같은 방식으로 k-means를 망가뜨립니다. 그래도 군집을 반환하므로 항상 그림을 확인하세요.
챌린지
중급드론이 두 개의 곡선형 모래톱에서 물개 200마리를 발견했습니다. 시작 코드는 left 패널에 실제 분포를 그립니다.
- k-means로 물개를 군집화하세요. k = 2입니다.
right패널에 각 군집을 산점도로 표시하고,cluster 0또는cluster 1이라는 레이블을 붙이세요.- 중심점을 검은색
"X"마커로 표시하고centers라는 레이블을 붙이세요. 범례를 추가한 다음 그래프를 표시하세요.
Coddy가 차트를 설명하고 각 물개가 원래 모래톱에 속한 물개 수를 세어 줍니다. 두 무리의 경우 다음과 같습니다.
직접 해보기
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.cluster import KMeans
# 드론으로 본, 굽은 모래톱 두 곳에서 쉬고 있는 물개 200마리 (위치 단위: 100 m)
X, sandbar = make_moons(n_samples=200, noise=0.07, random_state=4)
# ax에 실제 모래톱을 그립니다
def draw_truth(ax):
ax.scatter(X[sandbar == 0, 0], X[sandbar == 0, 1], s=12, label="north bar")
ax.scatter(X[sandbar == 1, 0], X[sandbar == 1, 1], s=12, label="south bar")
ax.set_title("The truth")
ax.legend()
fig, (left, right) = plt.subplots(1, 2, figsize=(9, 4))
draw_truth(left)
right.set_title("K-means, k = 2")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
비지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러