엘보 방법
Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 7번째.
k에 대한 관성도를 그래프로 그려 보세요. 새로운 중심이 실제 그룹을 나눌 때마다 관성도는 급격히 떨어지고, 그다음에는 완만해집니다. 꺾이는 지점인 엘보가 적절한 k입니다:
대략적인 기준: 중심을 하나 더 추가해도 관성이 4분의 1 미만으로만 줄어들면 멈추세요. 사과의 경우 감소율은 56%, 그다음 69%, 그리고 겨우 15%였습니다. 따라서 k = 3입니다:
ax.plot(ks, inertias, marker="o")
ax.axvline(3, linestyle="--")굴곡이 없는 완만한 곡선은 뚜렷한 그룹이 없다는 뜻입니다. 다음 수업에서는 두 번째 판단 기준을 소개합니다.
챌린지
쉬움식물 앱은 빛과 물의 필요량에 따라 실내 식물을 관리 계획으로 분류합니다. 시작 코드에는 k from 1 to 8의 관성값, 차트, 그리고 cutoff가 들어 있습니다.
- k = 1부터 올라가면서, 다음 k가 관성값을
cutoff보다 적게 줄이는 지점에서 멈추세요. 해당 k를 출력하세요. - k에 따른 관성값을 점으로 표시하고, 해당 k에 수직 점선을 그린 다음, 그래프를 표시하세요.
다른 앱의 cutoff가 0.25인 경우:
Care plans: 3그러면 Coddy가 차트를 설명합니다.
직접 해보기
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 아래 줄은 변경하지 마세요
rng = np.random.default_rng(17)
# 식물 종류 4가지: 각각의 일반적인 빛과 물 필요량, 그리고 개체 수
kinds = [(8.5, 2, 35), (2.5, 7.5, 30), (5, 5, 30), (8, 8, 25)]
parts = []
for l, w, n in kinds:
parts.append(np.column_stack([rng.normal(l, 0.8, n), rng.normal(w, 0.8, n)]))
# 실내 식물 120개, 각 행에 하나씩: 빛과 물 필요량을 1부터 10까지의 점수로 표시
plants = np.clip(np.round(np.concatenate(parts), 1), 1, 10)
# Inertia에서 가져온 k = 1부터 8까지의 관성 값
ks = list(range(1, 9))
inertias = []
for k in ks:
km = KMeans(n_clusters=k, n_init=10, random_state=0)
km.fit(plants)
inertias.append(km.inertia_)
cutoff = float(input())
fig, ax = plt.subplots()
ax.set_title("Elbow: Care Plans")
ax.set_xlabel("k")
ax.set_ylabel("Inertia")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
비지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러