Menu
CoddyTech

응집형 모델

Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 17번째.

자동차들이 두 주차장을 가득 채우고, 그 사이 도로를 따라 자동차 행렬이 이어집니다. 2개 군집으로 병합하는 두 가지 방법:

동일한 자동차 102대를 나타낸 차트 두 개. 왼쪽, Ward 연결법: 북쪽 주차장과 남쪽 주차장이 각각 자동차 53대와 49대로 이루어진 두 군집이며, 도로는 두 군집으로 나뉩니다. 오른쪽, 단일 연결법: 자동차 101대로 이루어진 군집 하나와 홀로 떨어진 자동차 1대

scikit-learn이 병합을 수행합니다. n_clusters를 사용해 어디서 멈출지 지정하세요:

from sklearn.cluster import AgglomerativeClustering
model = AgglomerativeClustering(n_clusters=2, linkage="ward")
labels = model.fit_predict(X)

linkage는 두 그룹이 얼마나 떨어져 있는지를 결정합니다:

  • "ward", 기본값: 그룹을 서로 가깝게 유지합니다
  • "complete": 가장 멀리 떨어진 쌍을 기준으로 합니다
  • "average": 모든 쌍의 평균을 기준으로 합니다
  • "single": 가장 가까운 쌍을 기준으로 합니다

Single은 체인을 따릅니다. 여기서는 도로가 두 주차장을 모두 삼킵니다. Ward는 둥글고 균등한 그룹을 만듭니다.

challenge icon

챌린지

중급

야생 딸기는 세 곳에 군락을 이루고 자라며, 길을 따라 몇 포기도 자랍니다. 어떤 연결 방식이 군락을 찾아낼까요? plants에는 딸기의 위치가 들어 있습니다.

  1. linkages의 각 연결 방식에 대해 딸기를 3개 그룹으로 군집화하세요.
  2. 그룹 크기를 가장 큰 것부터 목록으로 출력하세요.
  3. 가장 큰 그룹에 딸기가 전체의 절반보다 많이 들어 있으면 chained를 추가하세요.

다른 초원의 경우:

ward: [40, 38, 31]
complete: [41, 37, 31]
average: [41, 37, 31]
single: [86, 22, 1] chained

직접 해보기

import numpy as np
import pandas as pd
from sklearn.cluster import AgglomerativeClustering

# 초원에 자라는 야생 딸기 식물 109그루의 위치(미터): 세 군락과 길 하나
rng = np.random.default_rng(4)
plants = np.round(np.concatenate([
    rng.normal([2, 3], 0.8, size=(40, 2)),
    rng.normal([9, 4], 1.0, size=(35, 2)),
    rng.normal([6, 10], 0.9, size=(25, 2)),
    np.column_stack([np.linspace(3, 8, 9), np.linspace(3.2, 4, 9)]) + rng.normal(0, 0.15, size=(9, 2)),
]), 2)
linkages = ["ward", "complete", "average", "single"]

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

비지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러